4

我不知道如何在 Clojure 中创建 Java 枚举。我想创建一个使用 Java 接口的 Java 枚举,然后将其传递给 Java 方法,这一切都在 Clojure 中。我想这样做以使用 neo4j 图形库(我不想使用某人的预建界面,我想编写自己的互操作代码)。

我在互联网上搜索,看起来我可以使用代理方法,但我一辈子都无法让它工作。这是我需要在 Clojure 中编写的等效 Java 代码:

private static enum RelTypes implements RelationshipType
{
    KNOWS
}

这是我的尝试(这是不对的:():

(proxy [org.neo4j.graphdb.RelationshipType] [] (KNOWS))

我还想知道是否有一个好的网站可以记录我所缺少的此类内容。我知道 Clojure 站点上的 Clojure 文档,这确实很有用,但例如使用示例,我并不总是能找到我需要的东西。也许我需要一本好的参考书?

4

1 回答 1

7

为什么不直接在 Java 中创建枚举?有时回到 Java 是最简单的答案。

这是一个非常古老的线程,关于使用代理来定义 Rich Hickey 和 Stuart Sierra 的枚举以及使用gen-class的一些替代方案。我认为代理路径应该适合您:

(proxy [Enum org.neo4j.graphdb.RelationshipType] [ "KNOWS" 1 ])

但这不会生成您希望外部 Java 用户使用的任何内容,在这种情况下,gen-class 可能是更好的解决方案。

于 2012-06-26T13:27:30.187 回答