如何在Java中存储对类的引用?

vw-*_*ter 4 java

在Java中有什么方法可以存储对类的引用吗?这就是我想要做的事情:

public class Foo
{
    public static void doSomething() {...}
};

SomeClass obj = Foo;
obj.doSomething();
Run Code Online (Sandbox Code Playgroud)

是否有一些类"SomeClass"允许我存储对类的引用,以便我以后可以使用该存储对象来调用原始类的静态成员?

显而易见的是类Class:

Class obj = Foo.class;
obj.someMember().doSomething();
Run Code Online (Sandbox Code Playgroud)

但我还没想出哪个班级成员可能扮演"someMember()"......我认为他们都不是.

有谁知道我在Java中尝试做的事情是否可行?

Eri*_*ica 5

您可以使用类上的getMethod()方法从Class对象动态获取方法.如果方法是静态的,则"invoke"的"object"参数将为null.

例如,上面的"obj.someMember()"将是这样的:

obj.getMethod("someMember", null).invoke(null, null);
Run Code Online (Sandbox Code Playgroud)

额外的空值是因为您的方法不需要参数.如果您的方法采用参数,那么它们将需要相应地传递.

这将抛出各种已检查的异常,因此您也需要处理这些异常.

一旦调用该方法,它将返回一个Object.你想要将它转换为你期望的任何类型,然后你就可以直接在其上运行"doSomething()"方法.

如果您想了解更多内容,可以使用一种名为反射的技巧.:)