建立對像例項的5種方式
阿新 • • 發佈:2018-12-14
1、使用new關鍵字
Dog jack = new Dog();
2、使用Class類的newInstance方法
Class dogClass = Dog.class; //拿到class Dog的 Class例項物件
Dog rose = (Dog) dogClass.newInstance(); //呼叫Class的例項方法 newInstance()建立Dog的例項物件
3、使用Constructor類的newInstance方法
Constructor<Employee> constructor = Employee.class.getConstructor(); Dog jack = constructor.newInstance();
4、使用clone方法
public class CreateFour implements Cloneable { public static void main(String args[]) { CreateFour f = new CreateFour(); try { CreateFour cloneObject = (CreateFour) f.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
5、使用反序列化
public class CreateFour implements Serializable { public static void main(String args[]) { CreateFour fCreateFour = new CreateFour(); ObjectOutputStream objectStream; try { objectStream = new ObjectOutputStream(new FileOutputStream("res/obj.txt")); objectStream.writeObject(fCreateFour); ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("res/obj.txt")); CreateFour cloneFour = (CreateFour) objectInputStream.readObject(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
6、總結 建立物件的5種方式,不管利用物件流,還是利用clone(),都會開闢新的記憶體空間,就是在jvm中的堆記憶體複製一個與源物件相同的新的物件(千萬不要以為舊引用與新引用對應的是同一個物件)。