在库中,有一个函数将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反射方式中定义参数的类型?
答案 0 :(得分:1)
请注意,您的方法采用类型为Class<?>
的参数。您传递给Class#getDeclaredMethod()
的参数是该方法的格式参数类型的Class
个实例数组,在本例中为Class.class
,而不是MySchool.class
。
所以,你应该得到方法:
Method m = libClass.getDeclaredMethod("libMethod", new Class[]{Class.class});