類中類html
1. 反射介紹java
反射這一律念最先由編程開發人員Smith在1982年提出,主要指應用程序訪問、檢測、修改自身狀態與行爲的能力。這一律唸的提出馬上吸引了編程界的極大關注,各類研究工做隨之展開,隨之而來引起編程革命,出現了多種支持反射機制的面嚮對象語言。web
在計算機科學領域,反射是指一類可以自我描述和自控制的應用。在Java編程語言中,反射是一種強有力的工具,是面向抽象編程一種實現方式,它能使代碼語句更加靈活,極大提升代碼的運行時裝配能力。編程
2. 反射在java中的體現api
Java反射說的是在運行狀態中,對於任何一個類,咱們都可以知道這個類有哪些方法和屬性。對於任何一個對象,咱們都可以對它的方法和屬性進行調用。咱們把這種動態獲取對象信息和調用對象方法的功能稱之爲反射機制。案例:mybatis
和https://programmer.help/blogs/reflection-and-dynamic-agent-in-mybatis.htmloracle
輸出效果:app
可用getConstructors()返回類的全部公共構造器
輸出效果:
源文件的構造器:框架
2.3 獲取類全部的公共public field屬性編程語言
可用
getFields()返回類的全部公共屬性(包括從父類和接口繼承過來的)
輸出效果:
可用
getMethods()返回類的全部公共方法(包括從父類和接口繼承過來的)
輸出:
可用
getAnnotations()返回類的全部註解
測試代碼:
輸出效果:
3. 如何使用經過反射獲得構造器、field屬性、方法、註解
輸出效果:
3.2.1 獲取公有方法(參數化和非參數化)
3.2.2 獲取私有方法(無參和有參數化)
最終輸出:
3.3.1 參數化獲取某個具體的field屬性
輸出:
3.3.2 獲取field屬性的從屬類或接口
輸出:
3.3.3 獲取field屬性的類
只寫了核心代碼「:
3.3.4 設置和獲取公用public field屬性的值
只寫了核心代碼「:
輸出:
3.3.5 設置和獲取私有private field屬性的值
只寫了核心代碼「:
輸出:
不細分了,要否則又寫不完了
定義註解
具體類中使用,只寫核心代碼:
測試代碼:
出結果:
總結: 構造器、方法、註解,一句話反射很重要!!!
參考:
0 java反射 : https://baike.baidu.com/item/JAVA%E5%8F%8D%E5%B0%84%E6%9C%BA%E5%88%B6/6015990?fr=aladdin
https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedElement.html
2. Reflection and Dynamic Agent in Mybatis
https://programmer.help/blogs/reflection-and-dynamic-agent-in-mybatis.html