sealed interface vs sealed class vs enum
enum:
• в первую очередь - это перечисление. поэтому у него есть методы для перебора значений
• у каждой константы перечисления есть только параметры, описанные в конструкторе родительского enum
• у каждого константы перечисления есть только функции, объявленные как abstract или определенные в родительском enum
• каждое константы перечисления - object, то есть имеет один экземпляр
• реализует serializable (удобно сохранять\отправлять как строку) и comporable (непонятно зачем)
sealed:
• в первую очередь - обычный класс
• каждый из наследников может иметь свой конструктор, свои функции
• наследниками могут быть как object, так и class
следовательно, наследники-классы могут существовать в нескольких экземплярах
• в отличие от обычных open-классов, все наследники sealed класса должны быть определены до компиляции
то есть sealed что-то среднее между open и final-классами
sealed class или sealed interface:
• class - если хочешь создать переменную в конструкторе\внутри класса
• interface - если переменные не нужны\достаточно констант в companion object
....
в каких конкретно кейсах вы используете sealed, а в каких enum?
Post #52
2.61K