2016-05-05 5 views
1

クラスのパラメータを持つ特定のメソッドの名前を返したいとします。クラスのパラメータを持つ特定のメソッドの名前を返す方法

私はまた、メソッド名を返すが、クラス名とパッケージ名を含めているプログラムを持っています。

import java.lang.reflect.*; 

public class ClassDemo { 
    public static void main(String[] args) { 
    ClassDemo cls = new ClassDemo(); 
    Class c = cls.getClass(); 

    try {     
     // parameter type is null 
     Method m = c.getMethod("show", null); 
     System.out.println("method = " + m.toString());   
    } 
    catch(NoSuchMethodException e) { 
     System.out.println(e.toString()); 
    } 
    try { 
     // method Long 
     Class[] cArg = new Class[1]; 
     cArg[0] = Long.class; 
     Method lMethod = c.getMethod("showLong", cArg); 
     System.out.println("method = " + lMethod.toString()); 
    } 
    catch(NoSuchMethodException e) { 
     System.out.println(e.toString()); 
    } 
    } 

    public Integer show() { 
     return 1; 
    } 

    public void showLong(Long l) { 
     this.l = l; 
    } 
    long l = 78655; 
} 

、結果は次のとおりです:コードがある

method = public java.lang.Integer ClassDemo.show() 
method = public void ClassDemo.showLong(java.lang.Long) 

私の質問、私はそれに関連するパラメータではなく、クラス名とパッケージ名なしでメソッド名を得ることができる方法はありますか?

私が意味する、その場合には、結果は次のようになります。

method = show() 
method = showLong(Long) 

私は私が何をしたい質問Getting the name of the current executing methodを見ましたが、そのありません。誰も私に何か解決策を教えてもらえますか?

+0

あなたは '' lMethod.getName() 'と' lMethod.getParameterTypes()を呼び出し、そこから行くことができますか? – immibis

+0

コードではないテキストにはコード書式を使用しないでください。 – EJP

答えて

1
System.out.print(m.getName() + "("); 
Class<?>[] params = m.getParameterTypes(); 
for (int i = 0; i < params.length; i++) { 
    if (i > 0) { 
     System.out.print(", "); 
    } 
    System.out.print(params[i].getSimpleName()); 
} 
System.out.println(")"); 
+0

答えをありがとう。しかし、私はその方法を印刷したくありません。あるメソッド内で各メソッドをパラメータで返す必要がある場合はどうしますか?私は他の場所でそれぞれのメソッドを使うことができました。 – Nitu08

+0

@ Nitu08あなたの質問には印刷していました。同じロジックを非常に簡単に適用して、文字列を連結して返すことができます。 – shmosel

+0

はい私はそれをしました。ありがとうございます。 – Nitu08

1

メソッド名を取得するには:私はそのパラメータで各メソッドを返しますメソッドを記述しようとしてい

Class<?>[] paramTypes = method.getParameterTypes(); 
for(Class<?> paramType : paramTypes) { 
    System.out.println(paramType.getSimpleName()); 
} 
0

System.out.println(method.getName()); 

メソッドのパラメータの型の名前を取得するには:

public String getparameter(Method method){ 

     String m = method.getName();   
     String str = "";   
      Class<?>[] params = method.getParameterTypes(); 
      for (int i = 0; i < params.length; i++) { 
       if (i > 0) { 
        //System.out.print(", "); 
       }   
       str += m+"(" +params[i].getSimpleName()+ ")"; 
       System.out.println(str); 
      } 
      return str; 
    } 

しかし、ここで問題となるのは、pacameterが1つしかないメソッドを返すことです。複数のパラメータを持つメソッドを表示するにはどうすればよいですか?

関連する問題