在Kotiln文档中,他们给出了密封类的以下示例:
sealed class Expr {
class Const(val number: Double) : Expr()
class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()
}
Run Code Online (Sandbox Code Playgroud)
在这里使用delcaring NotANumber作为对象声明(singleton?)会有什么用?为什么不写class NotANumber : Expr()?
由于它不包含重要值,因此可以在任何地方重用它的单个实例.这样可以节省您需要的对象的创建成本.
另一个例子是Kotlin Unit,它也只是一个object.
这只是如何避免创建垃圾收集器必须清理的不必要实例的示例之一.另一个例子是Java BigInteger类如何具有常量的最终静态字段,如ZERO和ONE.虽然它们包含状态,但它们是不可变的,因此它们可以只是一个实例,每个实例都可以重用,而不必一直重新创建.
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |