api类似
public <T> void do(T o){...}
有个pojo对象MyAction a作为参数通过反射传给API执行。但是无法获取到这个do方法,获取方法的代码如下
class<?>[] types = {MyAction.class};
Method m = cls.getMethod("do", types);//这里报错,获取不到该方法
应该怎么写才能通过反射获取到该do方法?
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
因为泛型擦除的缘故,编译之后该方法就成了:
public void do (Object o) {...}
所以获取的时候直接参数类型是使用 Object.class:
import java.lang.reflect.Method;
public class Test<T> {
public static void main(String[] args) throws Exception {
Class<?> clazz = Test.class;
Method method = clazz.getMethod("test", Object.class); // 参数类型为 Object.class
Test test = new Test();
String param = "Hello world";
method.invoke(test, param);
}
public <T> void test(T o) {
System.out.println(o);
}
}
添加回答
举报
0/150
提交
取消