java中创建对象的几种方法的总结

Java创建对象主要有四种方法:

1、通过new关键字创建对象

2、通过clone()方法创建一个对象

3、通过反序列化的方式创建对象

4、通过反射机制创建对象

1、通过new语句创建对象

这是java中最简单的创建对象那个的方式,这种方式也可以调用任意的构造函数;

例如:Object  obj  =  new  Object();

2、通过clone()方法创建一个对象

java中任何时候调用对象clone方法,java虚拟机都会创建一个新的对象obj2,会把clone对象obj1的全部内容都复制进去,使用clone方法创建的对象是不可以调用任何的构造函数的。并且在使用clone方法前,必须要实现Cloneable接口才可以实现clone方法。

例如:Object obj2 = <Object>obj1.clone();

3、通过反序列化的方式创建对象

在反序列化时,java虚拟机会创建对象并且不调用任意构造函数,在反序列化一个对象之前,必须先让我们的类实现Serializable接口。

调用java.io.ObjectInputStream对象的readObject()方法。

例如:ObjectInputStream in = new ObjectInputStream (new FileInputStream(“data.obj”));

Object  obj3  =  (Object)in.readObject();

4、通过反射机制创建对象

调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

(1)、使用class类的newInstance方法

Class类本质上调用了反射包构造器类中无参数的newInstance方法,捕获了InvocationTargetException,将构造器本身的异常抛出。通过newInstance方法是调用无参数的构造函数创建对象

例如:Object obj4 = Object.class.newInstance();

Object obj4 = (Student)Class.forName(“根路径.Student”).newInstance();

(2)、使用constructor类的newInstance方法

通过newInstance方法调用有参数和私有的构造函数创建对象。

例如:Object obj5 = constructor.newInstance();

Constructor<Object> constructor = Object.class.getInstance();

  以上两种反射机制创建对象的方法中,classnewInstance方法实际上内部调用的就是ConstruvtornewInstance方法。

两个newInstance的区别:

1、Class类的newInstance只能触发无参数的构造方法创建对象,而构造器类的newInstance能触发有参数或者任意参数的构造方法来创建对象。

2、Class类的newInstance需要其构造方法是共有的或者对调用方法可见的,而构造器类的newInstance可以在特定环境下调用私有构造方法来创建对象。

3、Class类的newInstance抛出类构造函数的异常,而构造器类的newInstance包装了一个InvocationTargetException异常。

4、Class类位于javalang包中,而构造器类是java反射机制的一部分。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值