数据类似乎是Java中老式POJO的替代品。可以预见的是,这些类将允许继承,但我没有看到扩展数据类的方便途径。我需要的是这样的:在Kotlin中扩展数据类
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
上面的代码因为碰撞component1()
方法失败。仅在其中一个类中留下data
注解也不能完成这项工作。
也许还有另外一个习语来扩展数据类吗?
UPD:我可能仅注释子子类,但data
注释只处理在构造函数中声明的属性。也就是说,我必须声明所有父母的特性open
和覆盖他们,这是丑陋:
open class Resource (open var id: Long = 0, open var location: String = "")
data class Book (
override var id: Long = 0,
override var location: String = "",
var isbn: String
) : Resource()
什么组件1 ??? – maaartinus 2014-10-19 01:44:38
Kotlin隐式创建返回第N个属性值的方法'componentN()'。请参阅[Multi-Declarations]上的文档(http://kotlinlang.org/docs/reference/multi-declarations.html) – Dmitry 2014-10-20 09:27:24
要打开属性,还可以使用Resource abstract或使用编译器插件。 Kotlin对开放/封闭原则是严格的。 – 2017-11-06 08:12:03