これが初心者の質問である場合は申し訳ありません。ジェネリック型をパラメーターとして持つClassオブジェクトを受け取るメソッドがあります。私は次のことができます:
Class cs = Map.class;
しかし、これを渡すと、メソッドが宣言されているため、「NoSuchMethodException」が発生します。
public void doSomething(Class<Map<Object, List<Object>>> theclass){
...
}
私はそれを次のようにキャストしようとしました:
Class cs = (Class<Map<Object, List<Object>>>)(Class<?>)Map.class;
しかし、それでも同じ例外が発生します。
これを行う方法はありますか?
ここに完全なコードを投稿することはできませんが、エラーを再現しました。アプリケーションは実際にリフレクションを使用しています。ここに元のコードを投稿することはできませんが、例外を再現しました。
import java.lang.reflect.Method;
import java.util.*;
public class Main {
public static void main(String[] args) {
Class c = null;
try {
c = Class.forName("Second");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
String m = "doSomething";
Method method = null;
Class cs = Map.class;
try{
method = c.getMethod(m, cs);
} catch (NoSuchMethodException e){
e.printStackTrace();
}
}
}
class Second{
public static void doSomething(Class<Map<Object, List<Object>>> theclass){
System.out.println("HERE I AM!");
}
}
例外:
java.lang.NoSuchMethodException: Second.doSomething(java.util.Map)
at java.lang.Class.throwNoSuchMethodException(Class.java:283)
at java.lang.Class.getMethod(Class.java:825)
at Main.main(Main.java:16)