Java创建对象的方式:(4种)
1. 用new语句创建对象, 这是最常见的创建对象的方式
但使用new方法会增加耦合度,无论使用什么框架, 都要减少new的使用以降低耦合度.(耦合(coupling) : 指双方相互作用的程度强弱)
Person person1 = new Person;
2. 运用反射机制创建对象.
调用java.lang.Class类的newInstance方法
Person person2 = Person.class.newInstance();
或者java.lang.reflect.Constructor类的newInstance()实例方法
Constructor<Person> constructor = Person.class.getConstructor();
Person person3 = constructor.newInstance();
3. 调用对象的clone()方法
调用一个对象的clone方法, clone方法所做的就是直接复制字段的内容. 也就是说, 这个操作不管该字段对应的对象实例内容, jvm都会创建一个新同类对象, 将前面对象的内容全部拷贝进去, 像这样字段对字段的拷贝(field to field copy)就称为 "浅拷贝"
clone方法所做的正是"浅拷贝"
要使用clone方法, 必须要实现java.lang.Cloneable接口,并实现其定义的clone方法, 如果不实现Cloneable接口会抛出java.lang.CloneNotSupportedException
Person person4 = (Person) person4.clone();
4. 运用反序列化手段, 调用java.io.ObjectInputStream对象的readObject()方法
当序列化和反序列化一个对象, jvm会创建一个单独的对象. 在反序列化时, jvm创建对象并不会调用任何构造函数
为了反序列化一个对象, 需要让类实现Serializable接口
ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
Person person5 = (Person) in.readObject();