java创建对象的集中形式
1.使用new关键字;
2.使用Class类的newInstance方法;
可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象;
//写法一:
Person person = (Person)Class.forName("com.atguigu.java.Person").newInstance();
//写法二:
Person person = Person.class.newInstance();
3.使用Constructor类的newInstance方法
本方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。
//调用无参:
Constructor<Person> constructor = Person.class.getConstructor();
Person person1 = constructor.newInstance();
//或者调用有参:
Constructor<Person> constructor = Person.class.getConstructor(Integer.class, String.class, String.class, String.class, Integer.class);
Person person = constructor.newInstance(1,"df","df","df",2);
System.out.println(person);
4.使用clone的方式
4.1 浅克隆
4.2 深克隆
5.使用反序列化方式(克隆)
在需要被克隆的类需要实例化,添加克隆方法;
//序列化实现深克隆,返回深克隆对象
public Person myClone() {
Person person = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(this); //序列化对象
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
person = (Person) ois.readObject(); //反序列化对象
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return person;
}
————————————————
版权声明:本文为CSDN博主「makersy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/makersy/article/details/90378813