2015-08-29 4 views

ответ

10

Тот факт, что data разрешен для объявления объекта, на самом деле является ошибкой (KT-6486), которая должна быть исправлена.

data является аннотаций, который вызывает компилятор для генерации equals, hashCode, toString, copy и componentN функции. Это не имеет особого смысла при применении к объявлению объекта по двум причинам:

  • Объявление объекта не может иметь конструктор, и все эти функции работают на основе свойств, определенных в основном конструкторе.
  • Во время выполнения существует только один экземпляр любого объекта.

Так нет componentN функции не будет генерироваться, copy не может работать, и сгенерированные equals/hashCode/toString реализация будет эквивалентна, используемыми по умолчанию из Any, которые основаны на идентичности.

Смежные вопросы