在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中尝试做的事情是否可行?
您可以使用类上的getMethod()方法从Class对象动态获取方法.如果方法是静态的,则"invoke"的"object"参数将为null.
例如,上面的"obj.someMember()"将是这样的:
obj.getMethod("someMember", null).invoke(null, null);
Run Code Online (Sandbox Code Playgroud)
额外的空值是因为您的方法不需要参数.如果您的方法采用参数,那么它们将需要相应地传递.
这将抛出各种已检查的异常,因此您也需要处理这些异常.
一旦调用该方法,它将返回一个Object.你想要将它转换为你期望的任何类型,然后你就可以直接在其上运行"doSomething()"方法.
如果您想了解更多内容,可以使用一种名为反射的技巧.:)
| 归档时间: |
|
| 查看次数: |
3260 次 |
| 最近记录: |