java中可以通過類的class屬性得到該類的字節(jié)碼文件對象?
問題描述
如Class c1 = Student.class;可是無論是Student類還是它繼承的Object類都沒有class屬性呀?
問題解答
回答1:謝邀。
首先糾正一個(gè)錯(cuò)誤,class 是 keyword ,不是 Student 類里的 static member 。<class-name>.class 是 Java 中的某個(gè)特定語法。
其次,要得到該類的字節(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:我查的一個(gè)說法是,這個(gè)不是一個(gè)關(guān)鍵字,而是一個(gè)字面量,你可以嘗試直接再ide中敲“Student.class”,是會(huì)提醒你需要將這個(gè)值賦給某個(gè)變量的。如果后續(xù)有查到新的會(huì)再補(bǔ)充,至于類加載的話,可以參考我的一篇博客自定義類加載器-從.class和.jar中讀取
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - immutable配合react提升性能?3. css - 寫頁面遇到個(gè)布局問題,求大佬們幫解答,在線等,急!~4. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點(diǎn)疑問5. Apache 已經(jīng)把網(wǎng)站根目錄的改為allow from all了,但是服務(wù)器還是不能訪問?6. 實(shí)現(xiàn)bing搜索工具urlAPI提交7. 配置Apache時(shí),添加對PHP的支持時(shí)語法錯(cuò)誤8. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化9. javascript - 移動(dòng)端上不能實(shí)現(xiàn)拖拽布局嗎?10. phpstudy8.1支持win11系統(tǒng)嗎?

網(wǎng)公網(wǎng)安備