Java创建对象的5种方式
说明
Java有5种方式来创建对象:
- 使用 new 关键字(最常用):
ObjectName obj = new ObjectName();
- 使用反射的Class类的newInstance()方法:
ObjectName obj = ObjectName.class.newInstance();
- 使用反射的Constructor类的newInstance()方法:
ObjectName obj = ObjectName.class.getConstructor.newInstance();
- 使用对象克隆clone()方法:
ObjectName obj = obj.clone();
- 使用反序列化(ObjectInputStream)的readObject()方法:
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME))) {
ObjectName obj = ois.readObject();
}
示例
创建类
package object;import java.io.Serializable;
import java.util.Objects;public class Employee implements Serializable, Cloneable {private static final long serializableUID = 1L;private String name;public Employee() {System.out.println("Employee Constructor Called...");}public String getName() { return name; }public void setName(String name) { this.name = name; }@Overridepublic Employee clone() {Employee clone = null;try {clone = (Employee) super.clone();} catch (CloneNotSupportedException e) {}return clone;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Employee employee = (Employee) o;return Objects.equals(name, employee.name);}@Overridepublic int hashCode() { return Objects.hash(name); }@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +'}';}
}
创建类对象
package object;import java.io.*;
import java.lang.reflect.Constructor;public class ObjectCreate {private static final String FILE_NAME = "employee.obj";public static void main(String[] args) throws Exception {// 使用 new关键字 创建对象Employee employee = new Employee();employee.setName("张三");// 使用 Class类的 newInstance()方法// Employee employee2 = (Employee) Class.forName("Employee").newInstance();Employee employee2 = Employee.class.newInstance();employee2.setName("xxx2");System.out.println("Class类的newInstance()方法:" + employee2);// 使用 Constructor类的newInstance()方法Employee employee3 = Employee.class.getConstructor().newInstance();employee3.setName("xxx3");System.out.println("Constructor类的newInstance()方法:" + employee3);// 使用 clone()方法:类必须实现Cloneable接口,并重写其clone()方法Employee employee4 = (Employee) employee.clone();// employee4.setName("xxx4");System.out.println("对象clone()方法:" + employee4);// 使用 反序列化ObjectInputStream 的readObject()方法:类必须实现 Serializable接口// 序列化try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_NAME))) {oos.writeObject(employee);}// 反序列化try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME))) {Employee employee5 = (Employee) ois.readObject();System.out.println("反序列化:" + employee5);}}
}
Java创建对象的5种方式相关推荐
- java创建对象的五种方式
java创建对象的五种方式 一.使用new关键字 二.使用clone方法 三.使用反序列化 四.使用反射 五.使用Unsafe 一.使用new关键字 如 User user=new User(); 执 ...
- Java 创建对象的 6 种方式,总有一种适合你
创建对象的 6 种方式 假设有个女朋友类: @Data @NoArgsConstructor @AllArgsConstructor class GirlFriend {private String ...
- java创建对象的几种方式
前言,今日面试被问到创建对象是否一定要通过构造器,当时回答错误,查询分析后记录. 创建对象的几种方式: 第一种,也是最常用.一直接触到的方法:通过new 创建对象.这种方法需要用到构造器 Demo ...
- Java创建对象的四种方式
1. new 2. clone 3. 通过反射newInstance 4. 反序列化 5. String s = "abc"(这个是比较特殊的) 以String类为例 String ...
- Java创建对象的4种方式
使用new关键字 通过new关键字直接在堆内存上创建对象,这样很方便的调用对象的有参和无参的构造函数. Student stu1 = new Student("lihua"); C ...
- 盘点一下 Java创建对象的几种方式(7大种)全面版
1.new 关键字 ① 最常见的方式就是直接 new 加构造器的方式创建 ② 变形一:XXX(类名). 静态方法,本质这种方式还去调用类中构造器,比如说:单例模式.日历类(Calendar) 和一些工 ...
- java中 object创建对象_java创建对象的几种方式
本文收集整理关于java创建对象的几种方式的相关议题,使用内容导航快速到达. 内容导航: Q1:[八喜小子]java中创建对象的方式有哪些? 创建对象那就是应该为object 类型的值吧 那是一个引用 ...
- 什么是创建对象java_java创建对象的几种方式分别是什么
java创建对象有五种方式,分别是: 1.使用new关键字 这是最常见也是最简单的创建对象的方式.通过这种方式,我们可以调用任意的构造函数(无参的和带参数的).Employee emp1 = new ...
- 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...
最新文章
- iOS-UIViewController视图控制器跳转界面的几种常用方法
- php怎么读取上传文件的md5,PHP获取上传文件的md5码_PHP教程
- Ajax — 第六天
- python之元组操作
- cad二次开发加载cad自动调用_python实例_cad半自动绘图
- js 从一个json拼接成另一个json,并做json数据分页table展示
- 左耳朵耗子:云原生时代的开发者应具备这5大能力
- VBScript编程教程 [下]
- VSCode创建Vue项目完整教程
- wps小技巧,wps删除空白页怎么删?
- 单片机延时C语言程序
- 苹果手机输入汉字显示拼音和汉字问题
- OverTheWire——Bandit
- 如何设计一个结构合理的java项目
- ubuntu和windos 局域网NTP配置时间同步设置方法
- free导致的内存踩踏例子
- 听见丨美国大型连锁创客空间TechShop破产 首汽约车获7亿元B+轮融资 百度和蔚来汽车等领投
- 卡巴斯基 取消 远程控制 限制
- webrtc】windows 构建 :depot_tools 采坑
- java 黄金分割率_黄金分割率使您的网页设计更有效
热门文章
- zabbix设置中文字体
- 如何租用云GPU跑深度学习?AutoDL、恒源云极简高效使用教程
- 【数据库】PL/SQL向Oracle数据库中粘贴数据
- JS 字符串常用方法总结
- fgo服务器维护补偿,fgo国服4月12日版本版本更新公告 维护18个小时 补偿18个圣晶石...
- 大阪第76天——大阪街头暴走(遭遇性骚扰)
- 机器学习One-Hot编码
- 王者荣耀s22服务器维护,王者荣耀安卓无法更新解决方法 S22更新问题汇总
- 如何用WordPress+SRS做直播网站
- 百度这些年,有了狼性,却没了牙齿