我不明白为什么编译器建议我将带有子类的密封类转换为对象,让我们看一个例子:

sealed class CallState
class SendReceive : CallState()
class SendOnly:CallState()

对此
sealed class CallState
object SendReceive : CallState()
object SendOnly:CallState()

似乎它阻止我创建一个非状态对象,但我不知道编译器是什么意思。

谢谢你的帮助。

最佳答案

编译器说



由此您可以推断出,如果例如SendReceive 有状态,警告就会消失。事实上,如果你将声明更改为

class SendReceive(val i: Int) : CallState()

并因此向类添加 Int 状态,然后警告消失。

解释很简单。如果 SendReceive 的不同实例之间没有区别,为什么允许不同的实例?使其成为 object 使其成为单实例,当不同的实例没有任何不同时,这非常有意义。

关于kotlin - 为什么编译器建议将密封的子类转换为对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60873249/

10-10 07:30