(1)使用new关键字 ------------------>调用构造函数
(2)使用Class的newInstance方法------------------>调用构造函数
(3)使用Constructor的newInstance方法---------->调用构造函数
(4)使用clone方法 ------------------>没有调用构造函数
(5)使用反序列化 ------------------>没有调用构造函数
一、new关键字
Employee emp1=new Employee();
二、Class类的newInstance方法
Employee emp2=(Employee)Class.forName("org.programming.mitra.excerises.Employee").newInstance();
或:Employee emp2=Employee.class.newInstance();
三、Constructor的newInstance方法
Constructor<Employee> constructor=Employee.class.getConstructor();
Employee emp3=constructorn.newInstance();
四、clone方法
(要使用clone()方法,要先实现cloneable接口并实现其定义的clone方法)
Employee emp4= (Employee) emp3.clone();
五、使用反序列化
当我们序列化和反序列化一个对象时,JVM会给我们创建一个单独的对象。
在反序列化书,JVM创建对象并不会调用任何构造函数
为了反序列化一个对象,我们需要让我们的类实现Serializable接口
ObjectInputStream in= new ObjectInputStream(new FileInputStream("data.obj"));
Employee emp5=(employee) in.readObject();