在java类中定义的clojure访问枚举

时间:2018-05-05 14:54:02

标签: clojure clojure-java-interop

我正在尝试在我的应用程序中使用argon-jvm库进行散列处理。

默认情况下,此库使用Argon2i,但是,我想使用Argon2id。为此,我需要将枚举值Argon2Factory.Argon2Types.Argon2id传递给create类中的重载Argon2Factory方法。 Argon2Factory.java here的源代码。

从lein repl(将[de.mkammerer/argon2-jvm "2.4"]添加为依赖项),我可以执行以下操作:

user=> (import 'de.mkammerer.argon2.Argon2Factory)
de.mkammerer.argon2.Argon2Factory
user=> (def argon2 (Argon2Factory/create))
#'user/argon2
user=> (def hashedPassword (.hash argon2 17 65536 1 "passwordToBeHashed"))
#'user/hashedPassword
user=> hashedPassword
"$argon2i$v=19$m=65536,t=17,p=1$zvr4dz+/mpNxj5MVMtBALA$8dbE49MKV3dDfMMswTtjlB+niOeryh4EmJWNd7lj3FI"

但是,我无法访问Argon2Types类本身内定义的Argon2Factory.create枚举值(传递给Argon2Factory方法)。可以somone请帮助我访问这个枚举?

PS:在不同阶段的repl中自动完成:

user=> (de.mkammerer.argon2.
de.mkammerer.argon2.Argon2              de.mkammerer.argon2.Argon2Advanced      de.mkammerer.argon2.Argon2Constants     de.mkammerer.argon2.Argon2Factory
de.mkammerer.argon2.Argon2Helper        de.mkammerer.argon2.Argon2d             de.mkammerer.argon2.Argon2i             de.mkammerer.argon2.Argon2id
de.mkammerer.argon2.BaseArgon2          de.mkammerer.argon2.jna.Argon2Library   de.mkammerer.argon2.jna.Argon2_type     de.mkammerer.argon2.jna.JnaUint32
de.mkammerer.argon2.jna.Size_t
user=> (de.mkammerer.argon2.Argon2Factory/create
de.mkammerer.argon2.Argon2Factory/create           de.mkammerer.argon2.Argon2Factory/createAdvanced

PPS:我将使用自己的.java文件中定义的Argon2Types枚举向该项目提交拉取请求,但在平均值上,我仍然想知道是否可以访问这些枚举)

1 个答案:

答案 0 :(得分:1)

在REPL中,尝试:

(import 'de.mkammerer.argon2.Argon2Factory$Argon2Types)

这适合我。