实例化类的四种方式

实例化类的四种方式

实例化类有四种方式:

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 clazz = (Class) Class.forName("com.bjsxt.singleton.A");

Constructor 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

猜你喜欢 💖

【图】矮个子适合什么发型_矮个子发型禁忌_矮个子发型设计
欣悦这个名字怎么样
beat365官方app下载手机版

欣悦这个名字怎么样

📅 07-25 👁️ 5599
薜荔果的药方
beat365亚洲体育官网

薜荔果的药方

📅 07-07 👁️ 1913