你如何在Clojure中引用原始Java类型?

6 java clojure java-interop

我想使用反射从Clojure获取Java对象的方法.其中一个参数类型是Java原语,我不知道如何从Clojure中引用它们.

例如,说我想得到String.valueOf(boolean).我最接近的猜测是做

(.getDeclaredMethod String "valueOf" (into-array [Boolean]))
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为Boolean它不是原始类型本身,而是盒装版本.我试过了boolean,但是这是指内置的Clojure函数,并且bool是未定义的.

如何在Clojure中引用原始Java类型?

小智 11

您可以通过TYPE其盒装等效项的属性来引用基元类型.例如:

user=> (.getDeclaredMethod String "valueOf" (into-array [Boolean/TYPE]))
#<Method public static java.lang.String java.lang.String.valueOf(boolean)>
Run Code Online (Sandbox Code Playgroud)