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

标签 java

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

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

SomeClass obj = Foo;
obj.doSomething();

是否有某个类“So​​meClass”可以让我存储对类的引用,以便我以后可以使用该存储的对象来调用原始类的静态成员?

显而易见的是类类:

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/

相关文章:

java - Java中如何对泛型类型进行计算?

java - 在 ArrayList 内的 LinkedHashMap 中查找和赋值的替代方法

java - Android 中的计数器出现错误

java - 为什么不能将类定义为 protected ?

java - 无法将数据从android插入到MySQL

java - 从数据库加载选中的复选框

java - 密码检查错误

java - 从 webelement 到另一个 webelement 的相对 xpath

java - 如何在 java 中配置 war 应用程序以允许从 GET 方法访问资源目录?

java - 找不到匹配的索引 - GAE