java创建对象的方式包括_Java 创建对象的方式有哪些?

本文介绍了Java中创建对象的五种主要方法,包括使用new关键字、反射、克隆和反序列化等,并对比了它们的特点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6a440faac67258c387d6b0a35fe7f1f8.png

点击上方蓝字关注我们

Java 创建对象的方式有哪些?

(1)使用 new 关键字;

(2)反射,使用 java.lang.Class 类的 newInstance 方法。

这种方式会调用无参的构造函数来创建对象,有两种实现方式。

//方式一,使用全路径包名User user = (User)Class.forName("com.xian.view.demo.User").newInstance();//方法二,使用class类User user = User.class.newInstance();

(3)反射,使用 java.lang.reflect.Constructor 类的 newInstance 方法。

Constructor constructor = User.class.getConstructor();User user = constructor.newInstance();

(4)使用 clone 方法。

public class User implements Cloneable{/** 构造方法 */public User(Integer age){this.age = age;}public Integer getAge(){return age;}private Integer age;// 重写(Overriding)Object的clone方法@Overrideprotected User clone() throws CloneNotSupportedException{return (User) super.clone();}public static void main(String[] args) throws Exception{User person = new User(new Integer(200));User clone = person.clone();System.out.println("person == clone, result = " + (person == clone)); // false,拷贝都是生成新对象System.out.println("person.age == clone.age, result = " + (person.getAge() == clone.getAge())); // true,浅拷贝的成员变量引用仍然指向原对象的变量引用}}

首先需要明确两个概念:浅拷贝和深拷贝。

浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,对拷贝后对象的引用仍然指向原来的对象。

深拷贝:不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。

其他需要注意的是,clone () 是 Object 的 native 方法,但如果要标注某个类是可以调用 clone (),该类需要实现空接口 Cloneable。

(5)使用反序列化。

为了序列化 / 反序列化一个对象,需要该类实现空接口 Serializable。

序列化时首先创建一个输出流对象 oos, 使用 oos 的 writeObject () 方法将 p 对象写入 oos 对象中去。使用反序列化创建对象时,首先创建一个输入流对象 ois,使用输入流对象 ois 的 readObject () 方法将序列化存入的对象读出,重新创建一个对象。

分析:

前面三种创建方式比较常见,其中第二三种经常见于框架代码,用于 bean 注入等。第四五种本质是复制,是不需要调用构造器的(见下表),第五种在 rpc 调用中使用比较多,第四种使用比较少一些。

创建对象方式

是否调用了构造器

new 关键字

Class.newInstance

Constructor.newInstance

Clone

反序列化

扩展题目:

java.lang.Class 类的 newInstance 方法和 java.lang.reflect.Constructor 类的 newInstance 方法有什么区别? 后期文章会更新解答!

长按识别二维

码获取更多精

彩内容

JAVA开发者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值