Java 編程下通過反射獲取一個類中的方法名和對應參數名


實際編程中如果我們要使用系統中未暴露的方法,我們可以通過反射來使用這些方法,但在使用過程中我們很難確定方法對用的參數類型,以下的代碼可以幫你得到這些信息:

package cn.sunzn.reflectcase;

import java.lang.reflect.Method;

public class GetMethod {
   public static void main(String[] args) {
       getMethodInfo("java.util.HashSet");
   }

   /**
    * 傳入全類名獲得對應類中所有方法名和參數名
    */
   @SuppressWarnings("rawtypes")
   private static void getMethodInfo(String pkgName) {
       try {
           Class clazz = Class.forName(pkgName);
           Method[] methods = clazz.getMethods();
           for (Method method : methods) {
               String methodName = method.getName();
               System.out.println("方法名稱:" + methodName);
               Class<?>[] parameterTypes = method.getParameterTypes();
               for (Class<?> clas : parameterTypes) {
                   String parameterName = clas.getName();
                   System.out.println("參數名稱:" + parameterName);
               }
               System.out.println("*****************************");
           }
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       }
   }
}

傳入 java.util.HashSet 的運行結果如下:

方法名稱:add
參數名稱:java.lang.Object
*****************************
方法名稱:clone
*****************************
方法名稱:clear
*****************************
方法名稱:iterator
*****************************
方法名稱:remove
參數名稱:java.lang.Object
*****************************
方法名稱:contains
參數名稱:java.lang.Object
*****************************
方法名稱:isEmpty
*****************************
方法名稱:size
*****************************
方法名稱:equals
參數名稱:java.lang.Object
*****************************
方法名稱:hashCode
*****************************
方法名稱:removeAll
參數名稱:java.util.Collection
*****************************
方法名稱:toString
*****************************
方法名稱:addAll
參數名稱:java.util.Collection
*****************************
方法名稱:containsAll
參數名稱:java.util.Collection
*****************************
方法名稱:retainAll
參數名稱:java.util.Collection
*****************************
方法名稱:toArray
參數名稱:[Ljava.lang.Object;
*****************************
方法名稱:toArray
*****************************
方法名稱:wait
*****************************
方法名稱:wait
參數名稱:long
參數名稱:int
*****************************
方法名稱:wait
參數名稱:long
*****************************
方法名稱:getClass
*****************************
方法名稱:notify
*****************************
方法名稱:notifyAll
*****************************

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM