過去に私はできました、例えば
==> ((resolve (symbol "first")) [1 2 3])
1
しかし、Java 静的メンバーに対しては同じようには機能しないようです。たとえばenum
、独自のファイルに次のようなものがあります。
import org.neo4j.graphdb.RelationshipType;
public enum RelTypes implements RelationshipType {
KNOWS
}
私のClojureコード(neo4jを使用)では、次のことを行います。
(defn relate-to
[from to reltype-as-keyword]
(.createRelationshipTo from to
(resolve (symbol (str "RelTypes/" (.toUpperCase (name reltype-as-keyword)))))))
しかし、(resolve (symbol (str "RelTypes/" (.toUpperCase (name reltype-as-keyword)))))
nil を返します。
アップデート:
使用できる別のライブラリからわかります(つまり、他の場所で定義された列挙型を使用せず、その場で s を作成します)。reify
RelationshipType
例えば
(reify RelationshipType
(^String name [this] "KNOWS"))
しかし、Clojure コードの外部で Java ファイルに定義された列挙型を使用して、どのようにそれを行うのでしょうか?