您好,登錄后才能下訂單哦!
本篇內容主要講解“JDK怎么反射實例化對象”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JDK怎么反射實例化對象”吧!
獲取Class對象后最大意義實際上并不是在于只是一個對象的實例化操作形式,更重要的是Class類中提供了一個對象的反射實例化方法(代替了關鍵字new):
在JDK1.9以前的實例化:
@Deprecated(since="9")public T newInstance() throws InstantiationException, IllegalAccessException
在JDK1.9之后的實例化:
clazz.getDeclaredConstructor().newInstance()
范例:通過newInstance()方法實例化Person類對象
package cn.mldn.vo;public class Person {//任何情況下如果要實例化類對象,一定要調用類中的構造方法public Person(){ //無參構造方法System.out.println("*********** Person類構造方法 ************"); } @Overridepublic String toString() {return "我是一個人,一個脫離了低級趣味的好人!"; } }
package cn.mldn.demo; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Class<?> cls=Class.forName("cn.mldn.vo.Person");Object obj= cls.newInstance(); //實例化對象,JDK1.9后被廢除了System.out.println(obj); //輸出對象調用toString()方法/** * *********** Person類構造方法 ************ * 我是一個人,一個脫離了低級趣味的好人! */} }
現在通過反射實現的對象實例化處理,依然要調用類中的無參構造方法,其本質等價于“類 對象 = new 類()”,相當于隱含了關鍵字new,而直接使用字符串進行了替代。
范例:使用getDeclaredConstructor().newInstance()進行對象實例化
package cn.mldn.demo; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Class<?> cls=Class.forName("cn.mldn.vo.Person");Object obj= cls.getDeclaredConstructor().newInstance(); //實例化對象,JDK1.9廢除了System.out.println(obj);/** * *********** Person類構造方法 ************ * 我是一個人,一個脫離了低級趣味的好人! */} }
從JDK1.9后,newInstance()被替代了,因為默認的Class類中的newInstance()方法只能調用無參構造,所以很多開發(fā)者會認為其描述的不準確,于是將其變換了形式。
到此,相信大家對“JDK怎么反射實例化對象”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。