2018-06-20學習小結(jié) - 對象的引用與傳遞7

學習

17.6 反射機制

動態(tài)獲取信息以及動態(tài)調(diào)用對象的方法稱為Java的反射機制。

反射機制提供功能:在運行時判斷任意一個對象所屬的類;在運行時構(gòu)造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調(diào)用任意一個對象的方法。

范例 17-8 根據(jù)對象找到類1

package com.Javastudy2;

import java.util.Date;

/**
 * @author Y.W.
 * @date 2018年6月20日 下午11:05:18
 * @Description TODO 根據(jù)對象找到類1
 */
public class P446_17_8 {

    public static void main(String[] args) {
        Date date = new Date();
        Class<?> cls = date.getClass(); // 通過反射機制得到類的包名
        System.out.println(cls);
    }

}

運行結(jié)果:

運行結(jié)果

取得Class類的實例化對象的三種方法:

方式1:利用Object類的getClass()方法,但要求必須先產(chǎn)生指定類的對象才可以,實際幾乎不用。

Date date = new Date();
Class<?> cls = date.getClass();
System.out.println(cls);

方法2:利用“類.class”的形式取得Class類的對象,在Hibernate上使用。

Class<?> cls = java.util.Date.class;
System.out.println(cls);

方式3:利用Class類提供的一個方法完成,在系統(tǒng)框架中使用。

Class<?> cls = Class.forName("java.util.Date");
System.out.println(cls);

范例 17-9 根據(jù)對象找到類2

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2018年6月20日 下午11:29:29
 * @Description TODO 根據(jù)對象找到類2
 */
public class P447_17_9 {

    public static void main(String[] args) throws Exception {
        Class<?> cls = Class.forName("com.Javastudy2.Book8");
        Book8 book = (Book8) cls.newInstance(); // 實例化一個對象
        book.setTitle("Java開發(fā)");
        book.setPrice(79.8);
        System.out.println(book);
    }

}

class Book8 {
    private String title;
    private double price;

    public void setTitle(String title) {
        this.title = title;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "圖書名稱:" + this.title + ",價格:" + this.price;
    }
}

運行結(jié)果:

運行結(jié)果

小結(jié)

反射相比確實稍微難一點。


記于2018年6月20日23:54:37
By Yvan

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容