我不知道如何在Clojure中创建Java枚举。我想创建一个使用Java接口的Java枚举,然后将其传递给Java方法,所有这些都在Clojure中。我想这样做是为了使用neo4j图形库(我不想使用某人的预建接口,我想编写自己的互操作代码)。
我在互联网上搜索,看起来我可以使用代理方法,但我不能让我的生活让它发挥作用。这是我需要在Clojure中编写的等效Java代码:
private static enum RelTypes implements RelationshipType
{
KNOWS
}
这是我的捅(它不对:():
(proxy [org.neo4j.graphdb.RelationshipType] [] (KNOWS))
我也想知道是否有一个很好的网站记录了我所遗漏的这类内容。我知道Clojure网站上的Clojure文档,这非常有用,但是例如我无法总是找到我需要的用法。也许我需要一本好的参考书?
答案 0 :(得分:7)
为什么不在Java中创建枚举?有时回到Java是最简单的答案。
这是一个very old thread关于使用代理来定义Rich Hickey和Stuart Sierra的枚举以及使用gen-class的一些替代方法。我认为代理路径应该适用于你:
(proxy [Enum org.neo4j.graphdb.RelationshipType] [ "KNOWS" 1 ])
但这不会产生任何你想要外部Java用户使用的东西,在这种情况下,gen-class可能是更好的解决方案。