【问题标题】:clojure access enum defined inside a java classjava类中定义的clojure访问枚举
【发布时间】:2018-05-05 14:54:02
【问题描述】:

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

默认情况下这个库使用Argon2i,但是,我想使用Argon2id。为此,我需要将枚举值Argon2Factory.Argon2Types.Argon2id 传递给Argon2Factory 类中重载的create 方法。 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"

但是,我无法访问在 Argon2Factory 类本身中定义的 Argon2Types 枚举值(以传递给 Argon2Factory.create 方法)。有人可以帮我访问这个枚举吗?

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 枚举向该项目提交拉取请求,但与此同时,我仍然想知道是否可以访问此类枚举)

【问题讨论】:

    标签: clojure clojure-java-interop


    【解决方案1】:

    在 REPL 中,尝试:

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

    这对我有用。

    【讨论】:

    • 完美!谢谢!现在我可以做:(def argon2 (Argon2Factory/create Argon2Factory$Argon2Types/ARGON2id))
    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多