如何获取包含clojure中的基元的类的构造函数?

时间:2013-04-27 04:03:15

标签: clojure

为了访问具有类型参数的类的构造函数,我可以这样做:

> (.newInstance (.getConstructor java.util.Date (into-array java.lang.Class []))
          (object-array []))
;=> #inst "2013-04-27T04:00:55.498-00:00"

> (.newInstance (.getConstructor java.util.Date (into-array java.lang.Class [java.lang.String]))
          (object-array ["27 Apr 2013"]))
;=> #inst "2013-04-26T14:00:00.000-00:00"

java.util.Date也需要long作为参数,我希望写一些类似

的内容
> (.newInstance (.getConstructor java.util.Date (into-array java.lang.Class [long]))
          (object-array [0]))

怎么办呢?

1 个答案:

答案 0 :(得分:1)

基元的对象包装器都有一个静态TYPE字段,可以在这些情况下使用。

因此,对于您的具体示例,您需要......

(.newInstance 
  (.getConstructor java.util.Date 
     (into-array java.lang.Class [java.lang.Long/TYPE]))
        (object-array [0]))
;=> #inst "1970-01-01T00:00:00.000-00:00"