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

时间:2010-11-25 02:51:58

标签: java

Java中有没有办法存储对类的引用?这就是我想要做的事情:

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

SomeClass obj = Foo;
obj.doSomething();

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

显而易见的是Class class:

Class obj = Foo.class;
obj.someMember().doSomething();

但我还没想出哪个班级的成员可能会扮演“someMember()”......我认为他们都没有。

有人知道我在Java中尝试做什么是可能的吗?

2 个答案:

答案 0 :(得分:5)

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

例如,上面的“obj.someMember()”就是这样的:

obj.getMethod("someMember", null).invoke(null, null);

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

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

一旦调用了该方法,它将返回一个Object。你想把它转换成你期望的任何类型,然后你就可以直接运行“doSomething()”方法了。

这是使用一种叫做反射的技巧,如果你想更多地阅读它。 :)

答案 1 :(得分:0)

如果您使用的是jdk1.5或更高版本,当您想要获取Class的元数据时,注释将是一个选择。