【问题标题】:Create a Java enum in Clojure for Java interop在 Clojure 中为 Java 互操作创建 Java 枚举
【发布时间】:2012-06-26 13:06:20
【问题描述】:

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

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

private static enum RelTypes implements RelationshipType
{
    KNOWS
}

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

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

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

【问题讨论】:

    标签: clojure clojure-java-interop


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 如果我使用的是 gen-class,我还不如只使用 Java... 我就是这么做的。感谢您的帮助:)
    猜你喜欢
    • 2023-03-31
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多