2017-06-26 6 views
-1

long型のデータ型を、任意のparamクラスを受け入れるメソッドのparamとして渡すことができます。プリミティブ型longデータ型をClass.getMethod(methodName、Class ...)のClass型に変換する方法。

実際には、以下のクラスからメソッドの反映を取得しようとしています。

以下のコードを使用してこのメ​​ソッドにアクセスしようとしています。

Class clazz = new fun().getClass(); String str = "Welcome"; Method method = clazz.getMethod("getBox",new Long(22).getClass, str.getClass());

IAMが、私が呼び出すメソッド名をアクセスしてみてください、以下の例外を取得します。

java.lang.NoSuchMethodException: 

以下のメソッドシグニチャーのパラメーター型に長い変数と文字列変数を渡す方法。

public Method getMethod(String name, 
       Class<?>... parameterTypes) 
       throws NoSuchMethodException, 
         SecurityException 

答えて

2

Javaは、二つの異なるタイプとしてlongLongを検討します。前者はプリミティブ型であり、後者は参照型である。あなたは前者のClassオブジェクトが必要です。

long.classを実行すると、longのクラスを取得できます。実際には、ClassName.classを実行して、任意のクラスのClassオブジェクトを取得できます。

したがって、あなたのコードは次のように書き換えることができます。

Class<fun> clazz = fun.class; 
Method method = clazz.getMethod("getBox",long.class, String.class); 
+0

感謝!これは実際に働いた。 – Santosh

0

あなたはプリミティブのためprimitive.classを使用することができます - あなたの例では:

Method method = clazz.getMethod("getBox", long.class, String.class); 
関連する問題