4

我在 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()

谢谢。

4

1 回答 1

6

它们应该是Band Parameter[],因为和 varargsB擦除是作为数组实现的:T

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

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

另请注意,您展示的方法根本不需要是通用的。这也可以:

private void call(B object, Parameter... parameters) { ... }
于 2013-08-24T04:47:10.380 回答