我正在尝试编写一个可以在Java中使用的Clojure库,而用户不知道它是用Clojure编写的。为此,我需要我的字段有适当的类型:
我喜欢我可以这样做:
(deftype Point [^double x ^double y])
生成一个具有适当x / y类型的类。但是,这似乎只适用于原语,而不适用于类:
(deftype Foo [^String bar])
生成一个:
public final Object bar;
我希望在哪里:
public final String bar;
有没有办法约束字段类型?还有deftype
/ defrecord
以外的其他选项吗?
答案 0 :(得分:12)
来自deftype
上的http://clojure.org/datatypes和defrecord
:
字段可以有类型提示,可以是原始的
请注意,目前是非基本类型的类型提示 不会用于约束字段类型也不会 构造函数arg,但将用于优化其使用 类方法
计划限制字段类型和构造函数arg
(我的重点)
答案 1 :(得分:0)
也许尝试这样做:(deftype Point [#^Integer x #^Integer y])