java中可以通過類的class屬性得到該類的字節(jié)碼文件對象?
問題描述
如Class c1 = Student.class;可是無論是Student類還是它繼承的Object類都沒有class屬性呀?
問題解答
回答1:謝邀。
首先糾正一個錯誤,class 是 keyword ,不是 Student 類里的 static member 。<class-name>.class 是 Java 中的某個特定語法。
其次,要得到該類的字節(jié)碼文件,必須到文件系統(tǒng)中去找,無非就是 Student.class.getResource/getResourceAsStream 之類的方法,比較麻煩。建議看下asm、cglib等字節(jié)碼開源項(xiàng)目。
最后,字節(jié)碼是種比較復(fù)雜的技術(shù),不得已而用之,比如獲取方法參數(shù)里的Annotation(參考Spring Web MVC)。有些貌似可能和字節(jié)碼有關(guān)的技術(shù),實(shí)際上可以繞過,例如基于interface的AOP,完全可以用Proxy而不是用字節(jié)碼來實(shí)現(xiàn)的。
回答2:我查的一個說法是,這個不是一個關(guān)鍵字,而是一個字面量,你可以嘗試直接再ide中敲“Student.class”,是會提醒你需要將這個值賦給某個變量的。如果后續(xù)有查到新的會再補(bǔ)充,至于類加載的話,可以參考我的一篇博客自定義類加載器-從.class和.jar中讀取
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題2. css3 - 圖片等比例縮放3. html - css3中多列高度 統(tǒng)一4. javascript - 使用angular 的ui-sref 中出現(xiàn)了中文參數(shù),點(diǎn)擊跳轉(zhuǎn)后瀏覽器的地址欄里出現(xiàn)轉(zhuǎn)義后的%AE....%a%45. css3 - 如何將網(wǎng)頁CSS背景圖高斯模糊且全屏顯示6. javascript - 一個賦值運(yùn)算的問題7. css3 - animation屬性,safari瀏覽器不支持相關(guān)效果8. javascript - 求賜教:網(wǎng)易郵箱Web端模擬登錄看信的加密參數(shù)_ntes_nnid、_ntes_nuid9. css - jq有無現(xiàn)成函數(shù)改變r(jià)otateX/Y的deg10. javascript - QWebEngineView 如何爬 angular 的動態(tài)數(shù)據(jù)?
