繁体   English   中英

java:如何传递一个类并调用其静态成员?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM