10

我正在尝试编写一个可以在 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吗?

4

2 回答 2

12

来自http://clojure.org/datatypesdeftypedefrecord:_

字段可以有类型提示,并且可以是原始的

请注意,目前非原始类型的类型提示 不会用于约束字段类型或构造函数 arg,但将用于优化其在类方法中的使用

计划约束字段类型和构造函数 arg

(我的重点)

于 2012-08-25T15:40:06.347 回答
0

也许尝试这样做:(deftype Point [#^Integer x #^Integer y])

于 2012-08-25T14:42:41.493 回答