在Clojure中为Java互操作创建Java枚举

在Clojure中为Java互操作创建Java枚举,clojure,clojure-java-interop,Clojure,Clojure Java Interop,我不知道如何在Clojure中创建Java枚举。我想创建一个使用Java接口的Java枚举,然后将其传递到一个Java方法中,所有这些都在Clojure中。我想这样做是为了使用neo4j图形库(我不想使用别人的预构建接口,我想编写自己的互操作代码) 我在互联网上到处搜索,看起来我可以使用代理方法,但我一辈子都不能让它工作。下面是我需要用Clojure编写的等效Java代码: private static enum RelTypes implements RelationshipType {

我不知道如何在Clojure中创建Java枚举。我想创建一个使用Java接口的Java枚举,然后将其传递到一个Java方法中,所有这些都在Clojure中。我想这样做是为了使用neo4j图形库(我不想使用别人的预构建接口,我想编写自己的互操作代码)

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

private static enum RelTypes implements RelationshipType
{
    KNOWS
}
这是我的尝试(不对:():


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

为什么不直接用Java创建enum呢?有时候回到Java是不行的他给出了最简单的答案

下面是Rich Hickey和Stuart Sierra关于使用代理定义枚举的介绍,以及使用代理定义枚举的一些替代方法。我认为代理路径应该适合您:

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

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

如果我使用gen类,我也可以使用Java…这就是我所做的。感谢您的帮助:)
(proxy [Enum org.neo4j.graphdb.RelationshipType] [ "KNOWS" 1 ])