1.使用new创建对象
使用new关键字创建对象应该是最常见的一种方式,但是使用new创建对象会增加耦合度。无论使用什么框架,都要减少new的使用以降低耦合度。
Person person = new Person();
2.使用反射机制创建对象
- 使用Class对象的newInstance方法创建该Class对象对应类的实例,这种方法要求该Class对象对应的类有默认的空构造器。
Class clazz = Class.forName("hello.java.reflect.Person");
Person person = (Person)clazz.newInstance();
- 先使用Class对象获取指定的Constructor对象,在调用Constructor对象的newInstance方法创建Class对象对应类的实例,通过这种方法可以选定构造方法创建实例。
Constructor c= clazz.getDeclaredConstructor(String.class,String.class,Int.class);
Person person = (Person)c.newInstance("李四","男",20);
3.采用Clone
clone时,需要已经有一个分配了内存的源对象,创建新对象时,首先应该分配一个和源对象一样大的内存空间。要调用clone方法需要实现Cloneable接口,由于clone方法是protected的,所以修改Person类。
Person person1 = new Person();
Person person2 = (Person)person1.clone;
4.采用序列化机制
使用序列化时,要实现实现Serializable接口,将一个对象序列化到磁盘上,而采用反序列化可以将磁盘上的对象信息转化到内存中。