码迷,mamicode.com
首页 > 其他好文 > 详细

实例化类的四种方式

时间:2016-08-22 00:07:46      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:

实例化类有四种方式:

1)使用new操作符

2)调用Class对象的newInstance()方法

3)调用clone()方法,对现有实例的拷贝

4)通过ObjectInputStream的readObject()方法反序列化类

 1.new操作符

      A a1 = new A();
	  System.out.println("a1: " + a1);

2.Class.forName()的newInstance方法和Constructor对象的newInstance()方法

 

      Class<A> clazz = (Class<A>) Class.forName("com.bjsxt.singleton.A");
	Constructor<A> c = clazz.getDeclaredConstructor(null);
	A a2 = c.newInstance();
	System.out.println("a2: " + a2);
	A a3 = (A) Class.forName("com.bjsxt.singleton.A").newInstance();
	System.out.println("a3: " + a3);    

 3.对象的clone方法

	A a3 = (A) a1.clone();
	System.out.println("a3: " + a3);

4.getObject反序列化

	FileOutputStream fos = new FileOutputStream("d:/a.txt");
	ObjectOutputStream oos = new ObjectOutputStream(fos);
	oos.writeObject(a1);
	oos.close();
	fos.close();
	ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/a.txt"));
	A a5 = (A) ois.readObject();
	ois.close();
	System.out.println("a5: " + a5);

类A的具体代码如下:

class A implements java.io.Serializable {

	public A clone() {
		return this;
	}
}

结果如下:

 

  a1: com.bjsxt.singleton.A@1f6226
  a2: com.bjsxt.singleton.A@64ea66
  a3: com.bjsxt.singleton.A@158f9d3
  a4: com.bjsxt.singleton.A@1f6226
  a5: com.bjsxt.singleton.A@13f7281

  

 

  

  

实例化类的四种方式

标签:

原文地址:http://www.cnblogs.com/blogofcookie/p/5793986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!