本文介绍了如何获取在clojure中包含原语的类的构造函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为了访问已经键入参数的类的构造函数,我可以这样做:
(.newInstance(.getConstructor java.util.Date(into-array java.lang.Class []))
(object-array []))
; => #inst2013-04-27T04:00:55.498-00:00
> (.newInstance(.getConstructor java.util.Date(into-array java.lang.Class [java.lang.String]))
(object-array [2013年4月27日]))
; => #inst2013-04-26T14:00:00.000-00:00
但 java.util.Date
也需要一个 long
作为参数,我想写如下
> (.newInstance(.getConstructor java.util.Date(into-array java.lang.Class [long]))
/ pre>
(object-array [0]))
如何做到这一点?
解决方案原语的封装器都有一个静态的
TYPE
字段,可以在这些情况下使用。
你需要...
(。newInstance
(.getConstructor java.util.Date
-array java.lang.Class [java.lang.Long / TYPE]))
(object-array [0]))
; => #inst1970-01-01T00:00:00.000-00:00
In order to access the constructor of a class that has typed arguments, I can do:
> (.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"
but
java.util.Date
also takes along
as an argument and I wish to write something like> (.newInstance (.getConstructor java.util.Date (into-array java.lang.Class [long])) (object-array [0]))
how can this be done?
解决方案The object wrappers for primitives all have a static
TYPE
field that can be used in these cases.So for your specific example you need...
(.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"
这篇关于如何获取在clojure中包含原语的类的构造函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!