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

java:如何传递类并调用其静态成员?,java,Java,正如标题所说。我试图将a类传递给函数 f(MyType.class) 在哪里 class MyType { static int g() {...} } 可以使用接收类的函数吗 void h(Class<MyType> cls) {...} void h(类cls){…} 以某种方式访问此方法?鉴于函数h需要传递类MyType,我认为没有理由不使用静态访问形式的MyType.g()鉴于函数h需要传递类MyType,我认为没有理由不使用静态访问形式MyType.g()您

正如标题所说。我试图将a类传递给函数

f(MyType.class)
在哪里

class MyType {
    static int g() {...}
}
可以使用接收类的函数吗

void h(Class<MyType> cls) {...}
void h(类cls){…}

以某种方式访问此方法?

鉴于函数h需要传递类MyType,我认为没有理由不使用静态访问形式的
MyType.g()

鉴于函数h需要传递类MyType,我认为没有理由不使用静态访问形式
MyType.g()

您无法调用类的
g()
方法,因为参数将依赖于
class
类型。您只能调用
Class
提供的方法

通过传递
MyType
的实例并在其上调用方法实例,您尝试做的事情似乎更自然。

如果您在多个类中定义了
g()
,请在接口中定义此方法并使这些类实现它。

您无法调用类的
g()
方法,因为参数将依赖于
类型。您只能调用
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();
}

从技术上讲,您可以使用反射:

Class klass = ...;
Method m = klass.getDeclaredMethod(methodName, paramtypes);
m.invoke(null, args)
但是对于java来说,这不是很自然的事情,最好传入具有以下方法的某个接口的函数对象:

interface MyType {
    int g();
}

void h(MyType myType) {
  myType.g();
}

不要忘记该方法的范围。True。尽管示例代码shared并不表示作用域在包之外。
cls
参数的相关用法在
h
中都不存在。对于子类,参数应该是
classe。不要忘记方法的范围。True。尽管示例代码shared并不表示作用域在包之外。
cls
参数的相关用法在
h
中都没有。对于子类,参数应该是
ClassNot directly,这不是静态方法的工作方式,只有通过反射,您才能访问某些内容,尽管我不推荐它。更好的方法是使用功能界面,让用户根据提供的参数(如果必要的话)确定操作。不是直接的,这不是静态方法的工作方式,只有通过反射,你才能访问一些东西,尽管我不推荐。更好的方法是使用功能界面,让用户根据提供的参数确定操作(如果需要)。