正如标题所说的那样。我试图将一个类传递给函数
f(MyType.class)
其中
class MyType {
static int g() {...}
}
接收班级的功能
void h(Class<MyType> cls) {...}
以某种方式访问此方法?
答案 0 :(得分:1)
鉴于函数h需要传递MyType类,我认为没有理由不使用MyType.g();
的静态访问形式
答案 1 :(得分:1)
您无法调用类的g()
方法,因为参数将依赖于Class
类型。您只能调用Class
提供的方法。
通过传递MyType
的实例并在其上调用方法实例,您尝试做的事情似乎更自然。
如果您在多个类中定义了g()
,请在接口中定义此方法并使这些类实现它。
答案 2 :(得分:1)
从技术上讲,你可以使用反射来实现:
Class klass = ...;
Method m = klass.getDeclaredMethod(methodName, paramtypes);
m.invoke(null, args)
但它对于java来说并不自然,最好将这个方法传递给某个接口的函数对象:
interface MyType {
int g();
}
void h(MyType myType) {
myType.g();
}