【发布时间】:2009-12-21 14:31:46
【问题描述】:
在 Clojure 中,我可以像这样查找 Java 类的静态成员(例如,保存常量的字段):
ClassName/CONSTANT_FIELD
当我在运行时只知道它的名称时,如何访问该成员?一个示例是遍历一系列字段名称并获取所有字段值。
我想做这样的事情(当然,这段代码不起作用):
(let [c "CONSTANT_FIELD"]
ClassName/c)
最好的方法是什么?
【问题讨论】:
在 Clojure 中,我可以像这样查找 Java 类的静态成员(例如,保存常量的字段):
ClassName/CONSTANT_FIELD
当我在运行时只知道它的名称时,如何访问该成员?一个示例是遍历一系列字段名称并获取所有字段值。
我想做这样的事情(当然,这段代码不起作用):
(let [c "CONSTANT_FIELD"]
ClassName/c)
最好的方法是什么?
【问题讨论】:
您可以使用 Java 的反射 API。
(let [c "CONSTANT_FIELD"]
(.get (.getField ClassName c) nil))
nil 存在是因为您获得的是静态字段,而不是特定对象的成员字段。
【讨论】: