我的英语不好,所以我可以给你代码和错误信息 代码:
public class ReflectDemo {
private void t00(Class<?> unknown,String str)
{
System.out.println("t0");
}
}
@Test
public void test01()
{
Class<?> unknown= null;
try {
Method method= ReflectDemo.class.getDeclaredMethod("t00",unknown,String.class);
method.setAccessible(true);
method.invoke(new ReflectDemo(),"a","b");
} catch (Exception e) {
e.printStackTrace();
}
}
错误消息: java.lang.NoSuchMethodException:Demo.ReflectDemo.t00(null,java.lang.String) 如何获得t00的方法?
答案 0 :(得分:5)
您不能将null
作为参数值传递给getDeclaredMethod
。
改为传递类文字:
ReflectDemo.class.getDeclaredMethod("t00", Class.class,String.class)
请注意,您的invoke
将失败,因为"a"
不是Class<?>
的实例。