通過Class對象獲取對象的方式是通過class.newInstance()方式獲取,通過調(diào)用默認構(gòu)造參數(shù)實例化一個對象。
成都創(chuàng)新互聯(lián)公司2013年至今,先為冊亨等服務(wù)建站,冊亨等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為冊亨企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
/** * Created by hunt on 2017/6/27. * 測試的實體類 * @Data 編譯后會自動生成set、get、無慘構(gòu)造、equals、canEqual、hashCode、toString方法 */ @Data public class Person { private String name; private int age; }
/** * Created by hunt on 2017/6/27. */ public class NewInstanceTest { public static void main(String[] args) { ClasspersonClass = Person.class;//獲取Class實例 try { Person p = personClass.newInstance();//通過Class獲得Person實例 p.setAge(28); p.setName("hunt"); System.out.println(p); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
提示:class.newInstance()是通過無參構(gòu)造函數(shù)實例化的,一個對象默認是有一個無參構(gòu)造函數(shù),如果有一個有參構(gòu)造函數(shù),無參構(gòu)造函數(shù)就不存在了,在通過反射獲得對象會拋出 java.lang.InstantiationException 異常。
/** * Created by hunt on 2017/6/27. * 測試的實體類 */ public class Person { private String name; private int age; public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public Person(String name,int age){}//有參數(shù)構(gòu)造函數(shù) }
/** * Created by hunt on 2017/6/27. */ public class NewInstanceTest { public static void main(String[] args) { ClasspersonClass = Person.class;//獲取Class實例 try { Person p = personClass.newInstance();//通過Class獲得Person實例 p.setAge(28); p.setName("hunt"); System.out.println(p.getAge()+"----"+p.getName()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
總結(jié):以后創(chuàng)建實體類的時候一定要帶上無參構(gòu)造函數(shù),以便以后使用反射的時候?qū)嵗瘜ο蟛粧伋霎惓!?/p>
以上這篇通過Class類獲取對象(實例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。