反射

反射代理

經過反射建立對象 :對象

例->Person p = (Person)class.forName(「com.shsxt.demo.Peoson」).newInstance()接口

反射是發生在程序運行期間的行爲;之後會大量運用到反射技術,使用代碼更靈活簡單內存

反射:get

  1. 建立對象這個類型的Class對象的一個鏡像|複製體
  2. 類加載到內存的時候,就在內存中存在的,不用咱們手動建立就已經存在,而且只一個類只有一個表示這個類的Class對象
  3. 你能拿到一個類型的Class對象,可以使用Class類中的這些成員方法操做這個類型

 Class類的實例表示正在運行的Java應用程序中的類和接口it

 Java 反射機制能夠實現的功能:class

  1. 在運行時判斷任意一個對象所屬的類
  2. 在運行時構造任意一個類的對象
  3. 在運行時判斷任意一個類具備的成員變量和方法
  4. 在運行時調用任意一個對象的方法
  5. 生成動態代理

    獲取類的class對象,有如下三種方式:變量

  1. Class.forName(「包名.類名」)
  2. 類.class
  3. 對象.getClass()

經過反射反射

獲取一個類型的構造器:程序

  1. Constructor<T>getConstructor(Class<?>…parameterType)  返回一個Constructor對象,它反映此Class對象所表示的類的指定公共構造方法
  2. Constructor<?>[] getConstructor() 返回全部的公共的構造器

   經過構造器建立對象

  1. Class類中newInstance() 建立對象-->空構造
  2. Constructor類的成員方法 T newInstance(Object…initargs),接受匹配構造器的實參建立一個對象
  3. Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes   返回一個 Constructor 對象,該對象反映此 Class 對象所表示的類或接口的指定構造方法。
  4. Constructor<?>[] getDeclaredConstructors()   獲取全部的構造器對象,包括私有的

操做方法

  1. Method getMethod(String name, Class<?>... parameterTypes) 返回一個 Method 對象,它反映此 Class 對象所表示的類或接口的指定公共成員方法。
  2. Method[] getMethods()
  3. Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回一個 Method 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明方法。
  4. Method[] getDeclaredMethods() 

  執行方法

      Object invoke(Object obj, Object... args)  參數1:調用方法的對象   參數2:方法的實參 返回值:執行方法的返回值

相關文章
相關標籤/搜索