在Clojure中,我可以查找Java类的静态成员(例如,持有常量的字段),如下所示:
ClassName/CONSTANT_FIELD
当我在运行时只知道它的名字时,如何访问该成员?一个例子是循环一系列字段名称并获取所有字段值。
我想做这样的事情(当然这段代码不起作用):
(let [c "CONSTANT_FIELD"]
ClassName/c)
最好的方法是什么?
答案 0 :(得分:13)
您可以使用Java的反射API。
(let [c "CONSTANT_FIELD"]
(.get (.getField ClassName c) nil))
nil就在那里,因为你得到一个静态字段,而不是特定对象的成员字段。