在 Java 中有什么方法可以存储对类的引用?这是我想要做的:
public class Foo
{
public static void doSomething() {...}
};
SomeClass obj = Foo;
obj.doSomething();
是否有某个类“SomeClass”可以让我存储对类的引用,以便我以后可以使用该存储的对象来调用原始类的静态成员?
显而易见的是类类:
Class obj = Foo.class;
obj.someMember().doSomething();
但我还没有弄清楚哪个类 Class 的成员可能充当“someMember()”……我想他们都不是。
有谁知道我想做的事情在 Java 中是否可行?
最佳答案
您可以使用类上的 getMethod() 方法从类对象动态获取方法。如果一个方法是静态的,那么“invoke”的“object”参数将为空。
例如,上面的“obj.someMember()”将是这样的:
obj.getMethod("someMember", null).invoke(null, null);
额外的空值是因为您的方法不需要参数。如果您的方法采用参数,则需要相应地传入参数。
这将抛出各种已检查的异常,因此您也需要处理这些异常。
调用该方法后,它将返回一个对象。您需要将其转换为您期望的任何类型,然后您就可以直接在其上运行“doSomething()”方法。
如果您想阅读更多内容,这将使用一种称为反射的技巧。 :)
关于java - 如何在 Java 中存储对类的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273349/