Java反射庫詳解

java反射庫(reflection library) 提供了一個很是豐富且精心設計的工具集, 以便編寫可以動 態操縱 Java 代碼的程序。這項功能被大量地應用於 JavaBeans 中。使用反射, Java 能夠支持 Visual Basic 用戶習慣 使用的工具,特別是在設計或運行中添加新類時, 可以快速地應用開發工具動態地查詢新添加類的能力。 html

反射的做用java

    1.在運行時分析類的能力;
數組

    2.在運行時查看對象;
app

    3.實現通用的數組操做代碼;寧波鄞州新東方醫院
ide

    4.利用 Method 對象, 這個對象很像中的函數指針。
函數

Java反射中經常使用技術工具

  1.動態獲取類,例如:根據一個字符串獲取該類開發工具

String name="xxxxxxxxxxxx";  Class c1 = name.getClass();
System.out.println(c1.getName());

運行結果以下:ui

9b0fcf8b1bc198d289245facb1187dd6.png

2.動態驗證類是否存在與合法性,例如:好比上面獲取的java.lang.String類名 this

String name = "java.lang.String";
Class c1 = null;
try {
   c1 = Class.forName(name);
   System.out.println(c1.getName());
} catch (ClassNotFoundException e) {
}

運行結果以下:

9a061ef3c591947345c8c91ae74c64f6.png

注:咱們也能夠經過c1.getSuperclass()獲取到它的父類

3.獲取類的成員

    3.1.屬性

        a.            getDeclaredFields 

        b.            getDeclaredField(參數類型.class,....) 

    3.2.方法

            a.獲取全部方法

                  獲取方法的返回值類型

獲取方法的傳入參數類型

獲取指定的方法

"參數類型<span ui",sans-serif;color:#212529;background:="" white'="">.class,...."                public Constructor[] getDeclaredConstructors獲取單個指定構造器

            Test帶參數的構造器

public Test(int age , String name){    this.age = age;
   his.name = name;
   System.out.println("hello" + name + "i am" + age);
}

    使用newInstance方法調用構造器

Class[] p = {int.class,String.class};
constructors = c4.getDeclaredConstructor(p);
constructors.newInstance(24,"HuangLinqing");

打印結果以下圖:

df2c4b9dab335359d68f3ca81d22a943.png

相關文章
相關標籤/搜索