6

我想做类似的事情:

(defrecord Base [])
(defrecord Person [])
(defrecord Animal [])

(derive Person Base)
(derive Animal Base)

(isa? Animal Person)

这可能吗?

更新:

我已经意识到这是不可能的,所以我正在做这样的事情:

(defmulti type class)
(defmethod type Base [_] ::base )
(defmethod type Animal [_] ::animal )
(defmethod type Person [_] ::person )

这有意义还是有更好的方法?

4

1 回答 1

9

不,记录是 Java 类。正如多方法页面所述:

您还可以将类用作子类(但不能使用父类,使某物成为类子的唯一方法是通过 Java 继承)。

您不能使用记录扩展类,但可以实现接口。使用接口在 Java 类层次结构中发挥作用,您也许可以使某些事情起作用。

于 2011-01-03T17:49:15.523 回答