具有泛型类类型的Java反射getDeclaredMethod()



我在a类中有一个方法:

class Parameter {
...
}
class A {
   private <T extends B> void call(T object, Parameter... parameters){
   ...
   }
}

现在我想使用反射来获得方法"调用",

A a = new A();
// My question is what should be arguments in getDeclaredMethod
//Method method = a.getClass().getDeclaredMethod()

Thx。

它们应该是BParameter[],因为BT的擦除,并且varargs被实现为数组:

Method method = a.getClass().getDeclaredMethod(
        "call",
        B.class,
        Parameter[].class
);

请注意,您有一个语法错误:<T extends of B>应该是<T extends B>

还要注意,您所展示的方法根本不需要是泛型的。这也同样有效:

private void call(B object, Parameter... parameters) { ... }

最新更新