2012-01-31 10 views

答えて

9

をあなたはC.class.getMethods()[i].toString()呼び出すクラスCのI方法を取得するには。

EDIT:取得パラメータ名は、リフレクションAPIを使用してない可能です。

デバッグ情報でクラスをコンパイルしても、バイトコードから情報を抽出することは可能です。 SpringはASM bytecode engineering libraryを使ってそれを行います。

詳細については、this answerを参照してください。

2

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/reflect/Method.html#toString()

あなたが探している方法のためjava.lang.reflect.MethodオブジェクトのtoString()メソッドを使用します。

あなただけの参照としてこれを使用し、そのメソッドのオブジェクトを取得する方法を知りたい場合は、次の

Method toString = class.forName("java.lang.String").getDeclaredMethod("toString"); 
System.out.println(toString); 
+2

またはtoGenericString(); –

0
import java.lang.reflect.Method; 

public class method1 { 
    private int f1(Object p, int x) throws NullPointerException 
    { 
     if (p == null) 
      throw new NullPointerException(); 
     return x; 
    } 

    public static void main(String args[]) 
    { 
     try { 
      Class cls = Class.forName("method1"); 

      Method methlist[] = cls.getDeclaredMethods(); 
      for (int i = 0; i < methlist.length; i++) { 
       Method m = methlist[i]; 
       System.out.println("name = " + m.getName()); 
       System.out.println("decl class = " + m.getDeclaringClass()); 
       Class pvec[] = m.getParameterTypes(); 
       for (int j = 0; j < pvec.length; j++) 
        System.out.println("param #" + j + " " + pvec[j]); 
       Class evec[] = m.getExceptionTypes(); 
       for (int j = 0; j < evec.length; j++) 
        System.out.println("exC#" + j + " " + evec[j]); 
       System.out.println("return type = " + m.getReturnType()); 
       System.out.println("-----"); 
      } 
     } 
     catch (Throwable e) { 
      System.err.println(e); 
     } 
    } 
} 
+0

http://java.sun.com/developer/technicalArticles/ALT/Reflection/ – bmoran

関連する問題