创建对象(实例))的4种方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cadi2011/article/details/51672940

public class Dog{
	
	public Dog(){
		super();
	}
	
}

1、创建对象有什么难的,我们new一个就是的………………对,没错,这只是其中一种

Dog jack = new Dog();

2、利用class的反射机制,该种方式适用于有无参构造方法的

Class dogClass = Dog.class; //拿到class Dog的 Class实例对象
Dog rose = (Dog) dogClass.newInstance(); //调用Class的实例方法 newInstance()创建Dog的实例对象


Class dogClass = Class.forName("Dog");
Dog rose = (Dog) dogClass.newInstance();

3、利用java的对象,可序列化(对象在内存中的分配方式,在本地里保存一份一模一样的看,然后再取出来用,相当于把一个对象的状态完全保存住了,挺牛逼的啊,是不是游游戏里经常这么搞),利用封装类:ObjectOutputStream,ObjectInputStream。

前提:该类必须实现接口Serializable

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();
		}
	}
	
}


4、利用Object下实例方法clone(),该类必须实现Cloneable接口,不然会抛出异常CloneNotSupportedException

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、总结

答:好啦,创建对象的4种方式,伙伴们都知道了………… 利用对象流,还是利用clone(),都会开辟新的内存空间,就是在jvm中的堆内存复制一个与源对象相同的新的对象(千万不要以为旧引用与新引用对应的是同一个对象哦)

 




阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页