Java生成对象的四种方式

  1. 用new语句创建对象,这是常见的创建对象的方式  
User user = new User();

  2. 运用反射手段,调用Java.lang.Class或者Java.lang.reflect.Constructor类的newInstance()实例方法

Class.forName(classname).newInstance();
Wife wife = (Wife)Class.forName("com.java.clone.wife").newInstance;
Constructor<Wife> constructor = Wife.class.getDeclaredConstructor(int.class,String.c
lass);
Wife wife = (Wife)constructor.newInstance(1,"nihao");

  3.调用对象的clone()方法

Wife wife = new Wife(1,"wang");
Wife wife2 = null;
wife2 = (Wife)wife.clone();

  4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法

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

24. out = null;
25. } catch (IOException e) {
26. 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){
 Husband husband = new Husband(1);
 Wife wife = new Wife(1,"jin");
 husband.setWife(wife);
 Husband husband2 = cloneTo(husband);//运用反序列生成了一个对象
 }
 }

 

posted @ 2014-10-23 09:34  mjhuang  阅读(674)  评论(0编辑  收藏  举报