如何在Clojure中动态查找静态类成员?

时间:2009-12-21 14:31:47

标签: java clojure

在Clojure中,我可以查找Java类的静态成员(例如,持有常量的字段),如下所示:

ClassName/CONSTANT_FIELD

当我在运行时只知道它的名字时,如何访问该成员?一个例子是循环一系列字段名称并获取所有字段值。

我想做这样的事情(当然这段代码不起作用):

(let [c "CONSTANT_FIELD"]
  ClassName/c)

最好的方法是什么?

1 个答案:

答案 0 :(得分:13)

您可以使用Java的反射API。

(let [c "CONSTANT_FIELD"]
  (.get (.getField ClassName c) nil))

nil就在那里,因为你得到一个静态字段,而不是特定对象的成员字段。