詳情描述
反射的概念在 Java中是一個難點,對于剛學習Java的同學來說,不太容易理解,如何更好的掌握反射技術,并學會在實際中應用,需要反復練習和研究,千鋒小編在這里建議大家,在Java培訓學習反射過程中不要心急,老話說心急吃不了熱豆腐,只要我們有唧唧復唧唧的精神,吃透反射的概念那是遲早的事。
什么是反射
Java 反射是可以讓我們在運行時獲取類的方法、屬性、父類、接口等類的內部信息的機制。也就是說,反射本質上是一個“反著來”的過程。我們通過new創(chuàng)建一個類的實例時,實際上是由Java虛擬機根據這個類的Class對象在運行時構建出來的,而反射是通過一個類的Class對象來獲取它的定義信息,從而我們可以訪問到它的屬性、方法,知道這個類的父類、實現了哪些接口等信息。
我們知道使用javac能夠將.java文件編譯為.class文件,這個.class文件包含了我們對類的原始定義信息(父類、接口、構造器、屬性、方法等)。.class文件在運行時會被加載到Java虛擬機(JVM)中,當一個.class文件被加載后,JVM會為之生成一個Class對象,我們在程序中通過new實例化的對象實際上是在運行時根據相應的Class對象構造出來的。確切的說,這個Class對象實際上是java.lang.Class泛型類的一個實例,比如Class對象即為一個封裝了MyClass類的定義信息的Class實例。由于java.lang.Class類不存在公有構造器,因此我們不能直接實例化這個類。
如何獲取,class文件對象
1、使用類的對象獲取
每個類都使用Object作為父類,Object類方法
返回這個類的class文件對象,方法返回值Class類型對象
2、使用類的靜態(tài)屬性獲取
類名.class 返回這個類的class文件對象.屬性運行結果也是Class類型對象
3、使用Class類的靜態(tài)方法獲取
Class類靜態(tài)方法 forName(String 類名) 傳遞字符串類名,獲取到這個類的class文件對象,方法返回值也是Class類型對象
不管用哪種方式獲取的Class對象,他們都是相等的。
反射在 Android中的應用
JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調用對象的方法的功能稱為java語言的反射機制。
然而在android中Google很多的類的某些方法不讓第三方應用去調用,通過java反射機制能把這些隱藏方法獲取出來并調用,三方應用上我們就很方便的去用這些方法。
來千鋒教育學Java,讓Java反射不在是你的弱點和難點,金牌講師帶你學Java,講師和同學的雙向交流,讓你吃透Java。
千鋒教育:
千鋒西安校區(qū):
西安校區(qū)地址:西安市雁塔區(qū)高新六路52號立人科技C座西區(qū)4樓
面授課程:全棧WEB+培訓、全鏈路設計培訓、PHP全棧+服務器集群培訓、JavaEE+分布式開發(fā)培訓、大數據+人工智能培訓、 Unity游戲開發(fā)培訓、Python培訓、云計算+Python運維培訓、全棧軟件測試培訓、Android培訓、iOS培訓