我想使用反射从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)