Java反射專題學習之獲取方法的資訊
阿新 • • 發佈:2019-01-04
今天給大家介紹的反射專題學習之獲取類的方法資訊:
我們來看一段學習的程式碼:
import java.lang.reflect.Method; /** * @Description Java獲取方法資訊 * @Date 2019/1/4 10:41 * @Created by FLXH */ public class ClassUtil { /** * 此方法列印類的資訊,資訊包括類的成員函式,成員變數,名稱等等 */ public static void printClassMessage(Object object) { //要獲取類的資訊,必須先獲取此類(本質也是物件)的'類型別'(Class Type) Class c = object.getClass(); //1.獲取此類的名稱,並列印 System.out.println("類的名稱是: " + c.getName()); //2.獲取此類的成員函式 也就是成員方法;一個成員方法就是一個Method物件 Method[] ms = c.getMethods(); for (Method m : ms) { //得到方法的返回值型別,並列印 Class returnType = m.getReturnType(); System.out.print(returnType.getName() + " "); //得到成員方法的名稱並列印 System.out.print(m.getName() + "("); //獲取引數型別名稱-->得到的是引數列表的型別的'類型別' 比如:引數型別是int 那麼獲取到的 //就是int,引數型別是String,那麼就是java.lang.String(注意:有可能有多個引數)並列印 Class[] paramTypes = m.getParameterTypes(); for (Class paramType : paramTypes) { System.out.print(paramType); } System.out.println(")"); } } }
從上面的一些程式碼可以得到:
1.通過反射的方式用物件獲取類名是:
object.getClass().getName();
2.獲取此類 (類就是物件,這裡指obejct,下同)的成員函式(成員方法)
Method[] ms = c.getMethods();
3.一個類(物件)擁有很多的成員方法,我們可以遍歷方法的時候求出每個方法的返回值型別,程式碼如下:
for (Method m : ms) { //得到方法的返回值型別,並列印 Class returnType = m.getReturnType(); System.out.print(returnType.getName() + " "); }
4.每個成員方法有可能會擁有入參,引數就肯定會有型別,那麼我們求出方法入參的型別就使用下面的程式碼:
for (Method m : ms) {
Class[] paramTypes = m.getParameterTypes();
for (Class paramType : paramTypes) {
System.out.print(paramType);
}
System.out.println(")");
}
介紹的就是通過反射獲取類以及類的成員方法等相關方法,以理解為主,下期再見!