【发布时间】:2010-04-03 18:57:29
【问题描述】:
我正在尝试使用 Clojure 绑定来包装 Java 库。 Java 库中的一个特定类定义了一堆静态最终常量,例如:
class Foo {
public static final int BAR = 0;
public static final int SOME_CONSTANT = 1;
...
}
我有一个想法,我可以检查该类并将这些常量拉入我的 Clojure 命名空间,而无需显式地 def-ing 每个。
例如,不要像这样显式连接它:
(def foo-bar Foo/BAR)
(def foo-some-constant Foo/SOME_CONSTANT)
当模块加载时,我可以检查 Foo 类并在我的 Clojure 命名空间中动态连接 foo-bar 和 foo-some-constant。
我认为这样做有两个原因:
A) 在添加到Foo 类时自动引入新常量。换句话说,在 Java 接口添加新常量的情况下,我不必修改 Clojure 包装器。
B) 我可以保证常量遵循更 Clojure 风格的命名约定
我并没有真正喜欢这样做,但提出这个问题似乎是一个很好的问题,可以扩展我对 Clojure/Java 互操作的了解。
谢谢
【问题讨论】:
标签: clojure java-interop