4

ClojureでJava列挙型を作成する方法がわかりません。すべてClojure内で、Javaインターフェースを使用するJava列挙型を作成し、それをJavaメソッドに渡したいと思います。これをneo4jグラフライブラリで動作させるために実行したいと思います(誰かのビルド済みインターフェイスを使用したくないので、独自の相互運用コードを記述したいと思います)。

インターネットで検索したところ、プロキシ方式は使えるようですが、一生使えません。これが私がClojureで書く必要のある同等のJavaコードです:

private static enum RelTypes implements RelationshipType
{
    KNOWS
}

そして、これが私の刺し傷です(正しくありません:():

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

私が見逃しているこのようなことを文書化した良いウェブサイトがあるかどうかも疑問に思っています。私はClojureサイトのClojureドキュメントについて知っています。これは本当に便利ですが、たとえば使用法の例では、必要なものを常に見つけることができるとは限りません。おそらく私は良い参考書が必要ですか?

4

1 に答える 1

7

Javaで列挙型を作成してみませんか?Javaにフォールバックするのが最も簡単な答えである場合があります。

これは、プロキシを使用してRichHickeyとStuartSierraからの列挙型を定義することに関する非常に古いスレッドと、 gen-classを使用するいくつかの代替案です。プロキシパスは次のようなもので機能するはずです。

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

ただし、外部のJavaユーザーに使用させたいものは生成されません。その場合は、gen-classの方が適している可能性があります。

于 2012-06-26T13:27:30.187 に答える