比方说,我有一个简单的课程User
。现在我想创建一个inner data class
内部UserProperty
类User
,但是当我向类添加inner
修饰符时,IDE 就会抱怨Modifier inner is incomplete with data。我缺少什么?data
UserProperty
一方面,内部类使用外部实例作为隐藏的第一个构造函数参数(这实际上是private val
)。另一方面,数据类行为公开所有构造函数参数,包括它们的名称(在toString()
)中,因此它们“应该”可见。另外,在这种情况下
如果超类型具有开放并返回兼容类型的 componentN() 函数,则会为数据类生成相应的函数并覆盖超类型的函数。如果超类型的函数由于签名不兼容或者是final而无法被覆盖,则会报错;
应该component1()
是外部实例还是您实际编写的第一个参数?
设计者可能认为任何行为都会让足够多的用户感到惊讶,因此最好完全禁止这种行为。如果您希望自己UserProperty
像内部类一样,只需自己添加构造User
函数参数即可。
归档时间: |
|
查看次数: |
536 次 |
最近记录: |