66得票3回答
密封类与枚举类型在使用关联类型时的区别

我想基于一个Int创建一个颜色对象。我可以使用sealed class和enum来实现相同的结果,想知道哪一个更好。 使用sealed class:sealed class SealedColor(val value: Int) { class Red : SealedColor(0...

64得票1回答
在 Kotlin 中,从密封类扩展数据类。

我有一组数据类,它们共享一些公共字段。所以理想情况下,我希望在一个超类型中声明它们(比如在这个例子中的Message),并且如果需要访问这些公共字段(比如messageId),就可以编写操作超类型的函数。fun operate(m: Message) { use(m.messageId) ...

56得票8回答
Java 17中的封闭类是什么?

今天,我将我的Java版本从16更新到了17,并发现其中有一个新特性是sealed类。我认为可以这样声明: public sealed class Main permits AClass, AnotherClass { } 但是,在Java中封闭类有什么用呢? 我也知道这是JDK 15...

55得票4回答
将一个密封类与一个非密封类进行扩展的意义何在?

我真的不太明白为什么在JEP-360 / Java 15中会有一个"non-sealed"关键字。对我来说,一个"sealed"类的扩展应该只能是"final"或者是一个"sealed"类本身。 提供"non-sealed"关键字会引发开发者的hack行为。 为什么我们允许一个"sealed...

54得票2回答
Kotlin中密封类和密封接口有什么区别?

Kotlin 1.5引入了密封接口(sealed interface)。虽然我知道类和接口之间的区别,但我不清楚在使用密封类(sealed class)和密封接口(sealed interface)时的最佳实践和好处。 现在即使是简单情况下,我是否应该始终使用接口(interface)?还是需...

31得票1回答
从Java中访问Kotlin密封类

到目前为止,我一直在使用这个 Kotlin 密封类:sealed class ScanAction { class Continue: ScanAction() class Stop: ScanAction() ... /* There's more but that's n...

22得票7回答
Java中的“sealed interface”有什么作用?

密封类和密封接口是Java 15中的预览功能,在Java 16中进行了第二次预览,现在计划在Java 17中发布。 它们提供了经典的示例,如Shape -> Circle,Rectangle等。 我理解密封类:提供的switch语句示例对我有意义。但是,密封接口对我来说是一个谜。实现接口的任何...

15得票3回答
Java 15中密封类特性中,final和非密封类有什么区别?

我有以下封装接口(Java 15):public sealed interface Animal permits Cat, Duck { String makeSound(); } 这个接口被2个类实现:public final class Cat implements Animal...

12得票2回答
为什么编译器建议将封闭的子类转换为对象?

我不明白为什么编译器建议我将带有子类的密封类转换为对象,让我们看一个例子:sealed class CallState class SendReceive : CallState() class SendOnly:CallState() 到这里sealed class CallState ob...

11得票2回答
这段代码怎么会抛出NoWhenBranchMatchedException异常?

在我们最近的应用程序发布中,我们看到有一些kotlin.NoWhenBranchMatchedException被报告给了Fabric/Crashlytics。 这是相关的代码片段:private lateinit var welcome: Welcome // ... welcome....