[英]java: how can I pass a class and call its static members?
正如标题所说。 我试图将一个类传递给一个函数
f(MyType.class)
哪里
class MyType {
static int g() {...}
}
可以接收类的功能
void h(Class<MyType> cls) {...}
以某种方式访问此方法?
给定函数h要求传递MyType类,我看不出没有理由不使用MyType.g();
的静态访问形式MyType.g();
您无法调用类的g()
方法,因为该参数将依赖于Class
类型。 您只能调用Class
提供的方法。
通过传递MyType
实例并在其上调用方法实例,您尝试做的事情似乎更加自然。
如果在多个类中定义了g()
,请在接口中定义此方法,并使这些类实现它。
从技术上讲,您可以使用反射来做到这一点:
Class klass = ...;
Method m = klass.getDeclaredMethod(methodName, paramtypes);
m.invoke(null, args)
但这对于Java来说并不自然,最好传入具有这种方法的某些接口的函数对象:
interface MyType {
int g();
}
void h(MyType myType) {
myType.g();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.