java中创建对象的5中不同的方法
1、使用new关键字(这是最常用的创建对象的方法)
eg:User user1=new User();
2、使用class类的newInstance()方法(此方法newInstance方法调用无参构造函数已创建对象)
eg: User user2=Class.forName("***这写该类所在的包***").newInstance();
或者User user2=User.class.newInstance();
3、使用构造函数类的newInstance()方法(和方法2类似,java.lang.reflect.Constructor类中有一个可以用来创建对象的newInstance()函数方法,通过使用newInstance()方法我们可以调用参数化构造函数和私有构造函数)
eg:Constructor<User> constructor =User.class.getConstructor();
User user3=constructor.newInstance();
注:这些newInstance()方法被认为是创建对象的反射手段;
实际上,内部类的newInstance()方法使用构造函数类的newInstance()方法
4、使用clone()方法来创建对象(使用clone()方法创建对象不会调用任何构造函数)
在实际应用中,无论何时我们调用clone()方法,Java虚拟机都会为我们创建一个新的对象并且复制了之前对象的内容到这个新的对象中。
eg:User user4=(User) user3.clone();
5、使用反序列化(这个没听过!!!)
无论何时我们对一个对象进行序列化和反序列化。Java虚拟机都会为我们创建一个单独的对象。
在反序列化中,Java虚拟机不会使用任何构造函数来创建对象
eg:对一个对象进行序列化需要我们在类中实现可序列化的接口
ObjectInputStream in=newObjectInputStream(new FileInputStream("data.obj"));
User user5=(User) in.readObject();