1. 程式人生 > >Java反射專題學習之獲取方法的資訊

Java反射專題學習之獲取方法的資訊

今天給大家介紹的反射專題學習之獲取類的方法資訊:

我們來看一段學習的程式碼:

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(")");
        }

 介紹的就是通過反射獲取類以及類的成員方法等相關方法,以理解為主,下期再見!