Какова цель Декларации объекта внутри герметичного класса в Котлине?

В документации Kotiln они приводят следующий пример для закрытых классов:

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

Каким будет использование деления NotANumber как объявления объекта (singleton?) Здесь? Почему бы просто не написать class NotANumber : Expr() ?

Поскольку он не содержит значимого значения, единственный экземпляр его может быть использован повсеместно. Это экономит вам стоимость создания этого объекта там, где вам это нужно.

Другим примером этого может быть Unit Котлина, которое также является просто object .

Это всего лишь один из примеров того, как вы можете избежать создания ненужных экземпляров, которые сборщик мусора затем должен очистить. Другим примером может служить то, как класс Java BigInteger имеет конечные статические поля для констант, таких как ZERO и ONE . Хотя они содержат состояние, они неизменяемы, поэтому они могут быть только одним экземпляром, каждый из которых используется повторно, и его не нужно постоянно воссоздавать.

  • Локальные функции доступа к родительским переменным с тем же именем
  • Несоответствие типа Котлина при прохождении в параметре
  • Поддерживает ли Котлин монадическое понимание?
  • Новый фрагмент Kotlin из Recyclerview
  • Ручка ACTION_UP в OnLongPress Android
  • Наследование Котлина
  • Использование булевых? в выражении
  • Есть ли какой-либо примерный рабочий код для создания предварительно подписанных URL S3 в Котлине
  • Как сделать работу @Autowired в обычном классе?
  • Как объявить несколько свойств на одной строке
  • Почему Котлин держит MetaData в файле класса Kotlin?
  • Interesting Posts

    Kotlin Невозможно создать поле @Autowired в классе, которое аннотируется с @Configuration @EnableWebMvc

    как закрыть kotlin coroutines максимальный параллелизм

    Kotlin AlarmManager и BroadcastReceiver не работают

    Котлин: оператор двойной толстой кишки (отражение)

    Топливо, Котлин, Гсон, ожидается BEGIN_ARRAY, но BEGIN_OBJECT в строке 1

    Vert.x chunked отвечает данными из базы данных с использованием BLOB и спящего режима

    Android Studio 3.0 Неразрешенная ссылка: Поддерживаемые языки для класса AIConfiguration в Dialogflow (api.ai)

    Как проверить, нет ли Моно?

    Kotlin anko обычный селектор не работает, как в приведенных примерах

    Kotlinx не может разрешить символ «синтетический»

    Десериализация классов с ленивыми свойствами с использованием Gson и Kotlin 1.0 beta 4

    Что из ключевого слова в котлин

    Ошибка ввода типа. Попробуйте указать тип аргументации: Kotlin

    Переопределение функции с дженериками в котлине

    Как превратить Mutable Collection в неизменяемую

    Давайте будем гением компьютера.