我不明白为什么编译器建议我将带有子类的密封类转换为对象,让我们看一个例子:
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/