java反射總結
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態獲取的以及動態調用對象的方法的功能稱為java語言的反射機制。
Java反射機制主要提供了以下功能:在運行時判定任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判定任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;public class ReflectDemo2 {
/** * @author YCY */ public static void main(String[] args) { Class testClass; try { // 拿到Test字節碼文件 testClass = Class.forName("com.java.Test"); // 獲取Test包 Package p = testClass.getPackage(); // 創建Test對象 Test test1 = (Test) testClass.newInstance(); // 調用Test對象中的public方法 test1.method1(); test1.method3(1, '你'); // 獲取Test全部的構造方法 Constructor<?> cons[] = testClass.getConstructors(); // 遍歷數組,打印出Test所有的構造方法 for (int i = 0; i < cons.length; i++) { System.out.println(cons[i]); } // 通過有參構造方法創建Test對象 Test test2 = (Test) cons[0].newInstance(1, "你好", '嗎'); // 獲取Test類繼承的父類以及實現的接口 Class<?> parents = testClass.getSuperclass(); // 打印出Test類的父類名稱 System.out.println(parents.getName()); // 獲取Test類的所有實現的接口 Class<?>[] interfaces = testClass.getInterfaces(); for (int i = 0; i < interfaces.length; i++) { System.out.println(interfaces[i].getName()); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }
} </pre>
本文由用戶 open代碼123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!