如何通过类引用访问静态方法
2022-09-02 02:42:05
class A {
public static void foo() {}
}
class B {
public static void foo() {}
}
我有Class clazz = A.class; or B.class
;
我如何通过“clazz”访问它,假设它可能被分配为“A”或“B”
class A {
public static void foo() {}
}
class B {
public static void foo() {}
}
我有Class clazz = A.class; or B.class
;
我如何通过“clazz”访问它,假设它可能被分配为“A”或“B”
只能使用反射来访问这些方法。不能直接引用类,只能引用 Class 类型的实例。
使用反射调用方法名(int a, String b):
Method m = clazz.getMethod("methodname", Integer.class, String.class);
m.invoke(null, 1, "Hello World!");
请参阅 Class.getMethod() 和 Method.invoke()
您可能需要再次考虑您的设计,以避免动态调用静态方法的需要。
您可以通过反射调用静态方法,如下所示:
Method method = clazz.getMethod("methodname", argstype);
Object o = method.invoke(null, args);
其中 argstype 是参数类型的数组,args 是调用的参数数组。有关以下链接的更多信息:
在你的情况下,这样的东西应该有效:
Method method = clazz.getMethod("foo", null);
method.invoke(null, null); // foo returns nothing