1. 程式人生 > >建立對像例項的5種方式

建立對像例項的5種方式

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中的堆記憶體複製一個與源物件相同的新的物件(千萬不要以為舊引用與新引用對應的是同一個物件)。