繁体   English   中英

在Kotlin的密封舱内进行物体声明的目的是什么?

[英]What is the purpose of a Object Declaration inside a Sealed Class in Kotlin?

在Kotiln文档中,他们给出了密封类的以下示例:

sealed class Expr {
    class Const(val number: Double) : Expr()
    class Sum(val e1: Expr, val e2: Expr) : Expr()
    object NotANumber : Expr()
}

什么是使用delcaring的NotANumber作为对象声明(单身?)这里? 为什么不写一个class NotANumber : Expr()

由于它不包含重要值,因此可以在任何地方重用它的单个实例。 这样可以节省您需要的对象的创建成本。

另一个例子是Kotlin的Unit ,它也只是一个object

这只是如何避免创建垃圾收集器必须清理的不必要实例的示例之一。 另一个例子是Java BigInteger类如何为常量(如ZEROONE提供最终静态字段。 虽然它们包含状态,但它们是不可变的,因此它们可以只是一个实例,每个实例都可以重用,而不必一直重新创建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM