创建对象的方法(共4种)

方法1:静态编码&编译

//第一种 直接new 调用构造函数
A obj1 = new A(); obj1.hello();

方法2:克隆

//第二种 clone
//obj3是obj2的克隆对象  没有调用构造函数
B obj2 = new B();
obj2.hello();

B obj3 = (B) obj2.clone();
obj3.hello();

方法3: 序列化(serialization)和反序列化(deserialization)

//第三种 序列化 没有调用构造函数
//序列化会引发安全漏洞,未来将被移除JDK,不推荐.
C obj4 = new C();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data.obj"));

out.writeObject(obj4);
out.close();

ObjectInputStream in = new ObjectInputStream(new FileInputSteam("data.obj"));

C obj5 = (C) in.readObject();
in.close();

方法4和5:反射

//第四种 newInstanse  调用构造函数
Object obj6 = Class.forName("A").newInstance();
Method m = Class.forName("A").getMethod("hello");
m.invoke(obj6);

//第五种 newInstance  调用构造函数
Constructor<A> constructor = A.class.getConstructor();
A obj8 = constructor.newInstance();
obj8.hello();

 

posted @ 2021-02-03 15:31  unnerd  阅读(193)  评论(0)    收藏  举报