【问题标题】:How can I dynamically look up a static class member in Clojure?如何在 Clojure 中动态查找静态类成员?
【发布时间】:2009-12-21 14:31:46
【问题描述】:

在 Clojure 中,我可以像这样查找 Java 类的静态成员(例如,保存常量的字段):

ClassName/CONSTANT_FIELD

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

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

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

最好的方法是什么?

【问题讨论】:

    标签: java clojure


    【解决方案1】:

    您可以使用 Java 的反射 API。

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

    nil 存在是因为您获得的是静态字段,而不是特定对象的成员字段。

    【讨论】:

      猜你喜欢
      • 2012-05-16
      • 2012-04-13
      • 2018-10-05
      • 2014-06-09
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2011-03-31
      相关资源
      最近更新 更多