1、new :最常見的方法
Employee emp1 = new Employee();
2、使用newInstance()需要在有一個無參的構造方法,這個newInstance方法調用無參的構造函數創建對象。類名.calss.newInstance( )
Employee emp2 = Employee.class.newInstance();
3、java.lang.reflect.Constructor類里也有一個newInstance方法可以創建對象。我們可以通過這個newInstance方法調用有參數的和私有的構造函數。
Constructor<Employee> constructor = Employee.class.getConstructor();
Employee emp3 = constructor.newInstance();
方法2、3就是反射機制
4、無論何時我們調用一個對象的clone方法,jvm就會創建一個新的對象,將前面對象的內容全部拷貝進去。用clone方法創建對象並不會調用任何構造函數。
要使用clone方法,我們需要先實現Cloneable接口並實現其定義的clone方法。
Employee emp4 = (Employee) emp3.clone();
5、使用反序列化:當我們序列化和反序列化一個對象,jvm會給我們創建一個單獨的對象。在反序列化時,jvm創建對象並不會調用任何構造函數。
為了反序列化一個對象,我們需要讓我們的類實現Serializable接口