java - 如何在java中动态检索常量?

标签 java constants

我有几个接口(interface)都具有相同的常量 - ID 和 ROOT。我还有一个方法,我向其中传递一个对象,该对象将是这些接口(interface)之一的实现。

我如何根据传入的类动态检索常量的值 - 即我想执行如下操作:

public void indexRootNode(Node node, Class rootNodeClass)
{
    indexService.index(node, rootNodeClass.getConstant('ID'), 
        rootNodeClass.getConstant('ROOT'));
}

在 PHP 中这很容易,但在 Java 中这可能吗?我已经看到使用常量访问器解决了这个问题,但我想直接检索常量。注释在这里也帮不了我。

谢谢

最佳答案

这可以通过使用 reflection 来实现(另见相应的 javadoc )。

public void indexRootNode(Node node, Class rootNodeClass)
{
    Field idField = rootNodeClass.getField("ID");
    Object idValue = idField.get(null);
    Field roorField = rootNodeClass.getField("ROOT");
    Object rootValue = rootField.get(null);

    indexService.index(node, idValue, rootValue);
}

也许您还必须将值强制转换为相应的类型。

关于java - 如何在java中动态检索常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185494/

相关文章:

java - 如何存储用于构建键值组合的 Java 常量

java - 需要帮助才能开始工作

java.lang.ArrayOutOfBounds 写入文件时出现异常

java - 在 Java 中,在发送 JSON POST 时使用 HttpPost(apache commons HttpClient)——我应该对正文进行 URL 编码吗?

java - SWT\RCP 中是否有类似 cardLayout 的布局

c++ - const 和非常量方法之间的区别?

c++ - 在 VS 中更改常量 char* 文字的元素

c++ - 将元组的 const 引用传递给仿函数

java - Java中什么时候将变量转换为常量?

java - Nexus 5 通知灯光颜色