- 反射是Java最重要的特性。通過Java反射可以在運行時知道一個類的所有成員和方法,知道一個對象的類類型、成員和方法的所有信息,進而調用對象的方法或生成對象的代理或包裝類。
- Java是面向對象語言,除了靜態變量或原始數據類型外都是完全面向對象的。每個類定義也都是Class的實例變量,它表示類的類定義,類的方法、成員變量、構造函數都可以抽象理解為對象,其中Method代表類成員方法對象的類類型,Filed代表成員變量對象的類類型,Constructor代表構造函數對象的類類型;
- 獲取一個類的類類型可以通過它的靜態變量class實現,比如A.class;獲取一個對象的類類型可以通過調用它的getClass()方法實現;獲取通過一個類全限定名通過Class.forName獲取它的類類型。知道類類型即Class對象后,就可以知道它的所有成員變量或方法,進而進行各種操作。
- 反射的最大的作用是根據配置文件生成對象或動態加載類,從而解耦類與類或模塊與模塊間耦合,盡可能的將異常延后。比如JDBC中常通過Class.fornName方法動態的加載驅動類,從而方便的可以替換驅動類,并且不會因為具體的驅動類不存在而無法編譯。
- class1.getMethods()返回該類對象所有的public類型的方法,包括從父類繼承的方法。class1.getDeclaredMethods()返回所有該類自己定義的方法,不包含父類繼承過來的方法。JAVA反射學習網摘
Java基礎之反射