2010-11-27 63 views
5

我想使用反射從Clojure中獲取Java對象的方法。其中一種參數類型是Java原語,我不知道如何從Clojure中引用它們。你如何引用Clojure中的原始Java類型?

例如,假設我想獲得String.valueOf(boolean)。我最近的猜測是做

(.getDeclaredMethod String "valueOf" (into-array [Boolean])) 

但這種失敗,因爲Boolean不是基本類型本身,而是盒裝版。我試過boolean,但是它指的是內置的Clojure函數,而bool未定義。

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

回答

10

您可以通過其盒裝等價物的TYPE屬性來引用原始類型。例如:

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