溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDK怎么反射實例化對象

發(fā)布時間:2021-08-26 15:38:37 來源:億速云 閱讀:182 作者:chen 欄目:編程語言

本篇內容主要講解“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ù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jdk
AI