生活随笔
收集整理的這篇文章主要介紹了
Java中创建对象的四种方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
Java中創建對象的四種方式?
? (1) 用new語句創建對象,這是最常見的創建對象的方法。? ? (2) 運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。? ? (3) 調用對象的clone()方法。? ? (4) 運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。? 一.用new語句創建對象 ? Java代碼? ?
User?user?=?new?User()?? 二.運用反射手段 ? ? (1)調用java.lang.Class.newInstance() Java代碼? ?
Class.forName(classname).newInstance()?? Wife?wife?=?(Wife)?Class.forName("com.java.clone.Wife").newInstance();?? ? (2)調用java.lang.reflect.Constructor類的newInstance()? Java代碼? ?
Constructor<Wife>?constructor?=?Wife.class.getDeclaredConstructor(int.class,String.class);?? Wife?wife?=?(Wife)?constructor.newInstance(1,"nihao");?? 三.調用對象的clone()方法 ? 詳情參考: http://ncs123.iteye.com/blog/1775631
? ? Java代碼? ?
Wife?wife?=?new?Wife(1,"wang");?? Wife?wife2?=?null;?? wife2?=?(Wife)?wife.clone();//運用clone()方法產生新對象?? 四.運用反序列化手段 ? 被序列化的對象必須implements Serializable? Java代碼? ?
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){?? ????????Husband?husband?=?new?Husband(1);?? ????????Wife?wife?=?new?Wife(1,"jin");?? ????????husband.setWife(wife);?? ????????Husband?husband2?=?cloneTo(husband);//運用反序列生成了一個對象?? ????}?? } ?
轉載于:https://my.oschina.net/sky319/blog/112634
總結
以上是生活随笔為你收集整理的Java中创建对象的四种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。