java反射——關於許可權和異常

lengtianxue發表於2016-09-14
  使用Java反射API的一個重要好處是可以繞過Java語言中預設的訪問控制許可權。Constructor、Filed和Method都繼承自java.lang.reflect.AccessibleObject,其中的setAccessible方法可以用於設定是否繞過預設的許可權檢查,否則,訪問非public的方法或者欄位將產生IllegalAccessException異常。
    而在利用Invoke方法來呼叫方法是,如果方法本身丟擲異常,invoke方法將丟擲InvocationTargetException異常,通過getCause方法可以獲取實際的異常資訊。
    在Java7中,為所有與反射相關的異常類新增了一個統一的父類java.lang.ReflectiveOperationException,在處理反射相關的異常時可以直接捕獲該異常而不用分別捕獲各個異常子類。

關於Java動態性,除了反射機制外,Java7中提供了一種新的動態呼叫Java程式的方法,即方法控制程式碼MethodHandler,有些類似於C中的函式指標。此部分內容將在後續的文章中進行單獨的分析。 

相關文章