在过去,我已经能够,例如
==> ((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)))))
返回零。
更新:
我从另一个reify
可以使用的库中看到(即,不使用在其他地方定义的枚举,而是动态创建RelationshipType
s)。
例如
(reify RelationshipType
(^String name [this] "KNOWS"))
但是如何通过使用 Clojure 代码之外的 java 文件中定义的枚举来做到这一点?