Class.getmethod是否可以找到包含Class <类型的方法? >参数?

时间:2019-05-20 16:15:08

标签: java

我的英语不好,所以我可以给你代码和错误信息 代码:

  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的方法?

1 个答案:

答案 0 :(得分:5)

您不能将null作为参数值传递给getDeclaredMethod

改为传递类文字:

ReflectDemo.class.getDeclaredMethod("t00", Class.class,String.class)

请注意,您的invoke将失败,因为"a"不是Class<?>的实例。