如Class c1 = Student.class;可是无论是Student类还是它继承的Object类都没有class属性呀?
ringa_lee
謝邀。
先修正一個錯誤,class 是 keyword ,不是 Student 類別裡的 static member 。 .class 是 Java 中的某個特定語法。
其次,要得到該類別的字節碼文件,必須到文件系統中去找,無非就是 Student.class.getResource/getResourceAsStream 之類的方法,比較麻煩。建議看asm、cglib等字節碼開源專案。
最後,位元組碼是種較複雜的技術,不得已而用之,例如取得方法參數裡的Annotation(參考Spring Web MVC)。有些看似可能和字節碼有關的技術,實際上可以繞過,例如基於interface的AOP,完全可以用Proxy而不是用字節碼來實現的。
我查的一個說法是,這個不是一個關鍵字,而是一個字面量,你可以嘗試直接再ide中敲“Student.class”,是會提醒你需要將這個值賦給某個變量的。如果後續有查到新的會再補充,至於類別載入的話,可以參考我的一篇部落格自訂類別載入器-從.class和.jar讀取
謝邀。
先修正一個錯誤,class 是 keyword ,不是 Student 類別裡的 static member 。.class 是 Java 中的某個特定語法。
其次,要得到該類別的字節碼文件,必須到文件系統中去找,無非就是 Student.class.getResource/getResourceAsStream 之類的方法,比較麻煩。建議看asm、cglib等字節碼開源專案。
最後,位元組碼是種較複雜的技術,不得已而用之,例如取得方法參數裡的Annotation(參考Spring Web MVC)。有些看似可能和字節碼有關的技術,實際上可以繞過,例如基於interface的AOP,完全可以用Proxy而不是用字節碼來實現的。
我查的一個說法是,這個不是一個關鍵字,而是一個字面量,你可以嘗試直接再ide中敲“Student.class”,是會提醒你需要將這個值賦給某個變量的。如果後續有查到新的會再補充,至於類別載入的話,可以參考我的一篇部落格自訂類別載入器-從.class和.jar讀取