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

Mic*_*nes 6 java constants

我有几个接口都具有相同的常量 - ID和ROOT.我还有一个方法,我传递一个对象,这个对象将是这些接口之一的实现.

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

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

在PHP中这很简单,但这在Java中是否可行?我已经看到使用常量上的访问器解决了这个问题,但我想直接检索常量.注释也不会帮助我.

谢谢

Jan*_*net 7

这可以使用反射来实现(也可以参见相应的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);
}
Run Code Online (Sandbox Code Playgroud)

也许您可能需要将值转换为相应的类型.