使用java反射时的参数类型

时间:2014-02-03 15:16:42

标签: java reflection

在库中,有一个函数将Class对象作为参数:

public void libMethod(Class<?> cls){...}

我需要以Java Reflection方式调用这个库函数。

例如我有一个班级:

public MySchool extends School{...}

我想将MySchool类传递给库函数。我试过了:

//I can successfully get library class & a instance of it
Class<?> libClass = GET_LIB_CLASS();

//How can I define the type for the parameter?
Method m = libClass.getDeclaredMethod("libMethod", new Class[]{MySchool.class});
return m.invoke(libClass.newInstance(), MySchool.class);

我尝试过以上方式,但它不起作用。

如何在上面的java反射方式中定义参数的类型?

1 个答案:

答案 0 :(得分:1)

请注意,您的方法采用类型为Class<?>的参数。您传递给Class#getDeclaredMethod()的参数是该方法的格式参数类型的Class个实例数组,在本例中为Class.class,而不是MySchool.class

所以,你应该得到方法:

Method m = libClass.getDeclaredMethod("libMethod", new Class[]{Class.class});