簡體   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