浅谈Java反射(Reflect)技术--常用方法
生活随笔
收集整理的這篇文章主要介紹了
浅谈Java反射(Reflect)技术--常用方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java反射(Reflect)技術
概念:動態獲取在當前Java虛擬機中的類、接口或者對象等等信息(運行過程中讀取內容)1.作用(面試問題):
1.1 解除兩個類之間的耦合性,即在未得到依賴類的情況下,自身應用可以通過編譯
1.2 動態依賴注入(即需要某一類對象時動態生成類實例,并設置到被依賴的類中),減少編譯時的內存開銷 ?(大多框架都用)2.獲取Class對象的三種方式:(重要)
2.1、使用Class類的靜態方法: Class.forName(String name) jdbc注冊驅動使用過;2.2、類的語法:T.class,代表了與其匹配的Class對象 ?json:解析:fastjson,gson,org開頭的。。。
2.3、使用類的實例化的getClass方法: obj.getClass()
3.獲取類的構造器java.lang.reflect.Constructor(了解)
3.1 ?public Constructor<?>[] getConstructors() 返回類中所有的public構造器集合,默認構造器的下標為03.2 ?public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回指定public構造器,參數為構造器參數類型集合
3.3 ?public Constructor<?>[] getDeclaredConstructors() 返回類中所有的構造器,包括私有
3.4 ?public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 返回任意指定的構造器
3.5 ?Constructor重要的方法newInstance(Object ...initargs) 實例化類
4.獲取類的成員變量java.lang.reflect.Field(重要) ?
4.1 public Field[] getFields() 獲取所有的public成員變量4.2 public Field getField(String?name) 獲取任意public成員變量
4.3 public Field[] getDeclaredFields() ?獲取所有的成員變量
4.4 public Field getDeclaredField(String?name) ?獲取任意指定名字的成員變量
4.5 public void setAccessible(boolean flag) 設置私有屬性是否可訪問
4.6 Field 重要方法set(Object obj, Object ?value) 字段設置為指定的新值。5.獲取類的方法java.lang.reflect.Method(重要)
5.1 public Method[] getMethods() 獲取所有的共有方法的集合5.2 public Method?getMethod(String?name,Class<?>... parameterTypes) 獲取指定公有方法
5.3 public Method[] getDeclaredMethods() ?獲取所有的方法
5.4 public Method getDeclaredMethod(String?name,Class<?>... parameterTypes) 獲取任意指定方法
5.5 Method重要方法invoke(Object obj ,Object…parmasType) 執行對象的方法,第一個參數為類實例對象,第二個參數:對象方法的參數
6.Class類的實例化方法 newInstance()
7.獲取類的全名:getName() ;包名+類名
8.獲取類的簡稱:getSimpleName() ? 類名
9.獲取類的包名:getPackage() ?包名
總結
以上是生活随笔為你收集整理的浅谈Java反射(Reflect)技术--常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse自动注册Servlet:w
- 下一篇: 04-JDBC学习手册:JDBC中使用t