1. 程式人生 > >java反射意義

java反射意義

hot wrapper www query linked spa obj style float

JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。

Java身上指的是我們可以於運行時加載、探知、使用編譯期間完全未知的classes。換句話說,Java程序可以加載一個運行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),並生成其對象實體、或對其fields設值、或喚起其methods。

Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。

。當一個class被加載,或當加載器(class loader)的defineClass()被JVM調用,JVM 便自動產生一個Class 對象。

Class是Reflection故事起源。針對任何您想探勘的類,唯有先為它產生一個Class 對象,接下來才能經由後者喚起為數十多個的Reflection APIs。這些APIs將在稍後的探險活動中一一亮相。

Java允許我們從多種管道為一個class生成對應的Class object。圖2是一份整理。 Class object 誕生管道 示例: 1)運用getClass() 註:每個class 都有此函數 String str = "abc"; Class c1 = str.getClass(); 2)運用Class.getSuperclass() Button b = new Button(); Class c1 = b.getClass(); Class c2 = c1.getSuperclass(); 3)運用static method------Class.forName()(最常被使用) Class c1 = Class.forName ("java.lang.String"); Class c2 = Class.forName ("java.awt.Button"); Class c3 = Class.forName ("java.util.LinkedList$Entry"); Class c4 = Class.forName ("I"); Class c5 = Class.forName (".class"); 4)運用primitive wrapper classes的TYPE 語法 Class c1 = Boolean.TYPE; Class c2 = Byte.TYPE; Class c3 = Character.TYPE; Class c4 = Short.TYPE; Class c5 = Integer.TYPE; Class c6 = Long.TYPE; Class c7 = Float.TYPE; Class c8 = Double.TYPE; Class c9 = Void.TYPE;
  • Java 反射 - ImportNew

    2016年1月24日 - 加載完類之後, 在堆內存中會產生一個Class類型的對象(一個類只有一個Class對象), 這個對象包含了完整的類的結構信息,而且這個Class對象就像一面鏡子,... www.importnew.com/176.... - 百度快照

java反射意義