Java 反射機制知識總結

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

Class類

我們知道Java是一門面向對象語言,在Java的世界裡,萬物皆為對象,比如我們有一個Person類:

public class Person {

}

我們創建一個Person類的實例,Person person = new Person(); 那麼這個person,就是Person類的實例對象。

那麼既然萬物都為對象,所以類也是對象。

Java 反射機制知識總結

類是什麼的對象呢?類是Class類的對象,表示方式有三種:

//第一種,任何一個類都有一個隱含的靜態成員變量class

Class c1 = Person.class;

//第二種,已經知道該類的對象,通過getClass()獲得

Class c2 = person.getClass();

//第三種,Class類的forName()方法

Class c3 = Class.forName("Person");

//這裡,c1,c2,c3都是Class類的實例,我們稱c1, c2 ,c3為Person類的類類型

//不難看出,c1 == c2結果是true, c2 == c3結果也是true

獲取方法信息

基本的數據類型,void關鍵字都Class 類的實例;可以通過getame();getSimpleName()獲取類的名稱。

Class c1=String.class;

Class c2=int.class;

Class c3=void.class;

System.out.println(c1.getName());

System.out.println(c2.getSimpleName());

獲取類的所有方法,並打印出來:

public static void printClassInfo(Object object){

Class c=object.getClass();

System.out.println("類的名稱:"+c.getName());

/**

* 一個成員方法就是一個method對象

* getMethod()所有的 public方法,包括父類繼承的 public

* getDeclaredMethods()獲取該類所有的方法,包括private ,但不包括繼承的方法。

*/

Method[] methods=c.getMethods();//獲取方法

//獲取所以的方法,包括private ,c.getDeclaredMethods();

for(int i=0;i

//得到方法的返回類型

Class returnType=methods[i].getReturnType();

System.out.print(returnType.getName());

//得到方法名:

System.out.print(methods[i].getName()+"(");

Class[] parameterTypes=methods[i].getParameterTypes();

for(Class class1:parameterTypes){

System.out.print(class1.getName()+",");

}

System.out.println(")");

}

}

public class ReflectTest {

public static void main(String[] args){

String s="ss";

ClassUtil.printClassInfo(s);

}

}

運行:

類的名稱:java.lang.String

booleanequals(java.lang.Object,)

java.lang.StringtoString()

inthashCode()

Java 反射機制知識總結

尚學堂12大精英團隊+各類實戰項目,真正實現1+1>10的目標效果。幫助學員迅速成長,持久騰飛,成就學員“高富帥”人生;幫助企業技術和團隊成長,成就百年中華名企;助力中國持續成為世界強國而貢獻力量。尚學堂12大精英團隊,覆蓋IT行業十大領域,實戰團隊240人,服務學員累計超過10萬人,就業合作企業數量500+。


分享到:


相關文章: