我想做点什么:
(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 )
这有意义还是有更好的方法?
答案 0 :(得分:9)
没有。记录是Java类。正如multimethods页面所述:
您也可以将班级用作孩子 (但不是父母,唯一的方法 做一个班级的孩子 通过Java继承)。
您不能使用记录扩展类,但可以implement interfaces。使用接口在Java类层次结构中播放,您可能能够使某些东西工作。