天天看點

Java反射類工具擷取成員的所有方法代碼

package com.imooc.reflect;


 import java.lang.reflect.Method;


 public class ClassDemo3 {

     public static void main(String[] args) {

         

         String cString=new String();

         printClassMessage(cString);

         

         

         

     }

     /**

      * 列印類的資訊,包括類的成員函數

      * @param obj

      */

     public static void printClassMessage(Object obj){

         //要擷取類的資訊首先要擷取類的類類型

         Class c=obj.getClass();//傳遞的是哪個子類的對象,c就是該子類的類類型

         

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

         /**

          * Method類是方法的對象

          * getMethods方法擷取的是所有public函數,包括父類內建而來的。

          * getDeclaredMethods()擷取的是該類自己生命的方法,就是自己的,不分通路權限

          */

         Method[] ms=c.getMethods();

         for (int i = 0; i < ms.length; i++) {

             //得到方法的傳回值類型的類類型

             

             

             //得到方法的名稱

             System.out.print("方法名:"+i+" "+ms[i].getName()+" ");

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

             System.out.print("傳回值是:"+returnType.getSimpleName()+" ");

             //擷取參數類型

             Class[] returnTClasses=ms[i].getParameterTypes();

             if (returnTClasses.length>0) {

                 System.out.print("傳入參數類型 ");    

             }

             

             for (int j = 0; j < returnTClasses.length; j++) {

                 System.out.print(j+" :"+returnTClasses[j].getSimpleName()+" ");

             }

             

             System.out.println("");

         

         }

         c.getDeclaredMethods();

         

         

         

         

         

     }


 }