Java跳过构造方法新建对象

发表于:2016-6-13 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:谦谦王子    来源:51Testing软件测试网采编

  Java有四种创建对象的方法:
  (1) 用new语句创建对象,这是最常见的创建对象的方法。
  (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
  (3) 调用对象的clone()方法。
  (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
  1.new方法显式调用构造方法;
  2.反射方法无论是反射类还是反射构造方法都是通过构造方法构建对象;
  3.通过对一个原有对象的复制,是对内存影像的利用
  Person person= new Person();
  Person  person2= null;
  person2= (Person) person.clone();//运用clone()方法产生新对象
  4.是从文件中还原类的对象,也不会调用构造函数。
public class BeanUtil {
@SuppressWarnings("unchecked")
public static <T> T cloneTo(T src) throws RuntimeException {
ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
ObjectOutputStream out = null;
ObjectInputStream in = null;
T dist = null;
try {
out = new ObjectOutputStream(memoryBuffer);
out.writeObject(src);
out.flush();
in = new ObjectInputStream(new ByteArrayInputStream(
memoryBuffer.toByteArray()));
dist = (T) in.readObject();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (out != null)
try {
out.close();
out = null;
} catch (IOException e) {
throw new RuntimeException(e);
}
if (in != null)
try {
in.close();
in = null;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return dist;
}
public static void main(String[] args) {
Person person = new Person();
Person person2 = cloneTo(person);// 运用反序列生成了一个对象
}
}
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号