Sealed class Kotlin: использование и преимущества
Sealed class в Kotlin - это ограниченный класс, который определяет ограниченное множество подклассов. В отличие от обычных классов, которые могут иметь неограниченное число подклассов, классы, унаследованные от Sealed class, должны быть объявлены в том же файле, что и сама Sealed class.
Основная цель Sealed class - обеспечение безопасности исходного кода. Она гарантирует, что все варианты использования класса известны заранее и не могут быть расширены до других подклассов внешней области. Например, мы можем описать список типов шоколадок, которые могут быть использованы в нашей программе.
sealed class Chocolate{
class White: Chocolate()
class Milk: Chocolate()
class Dark: Chocolate()
}
В этом коде мы создали Sealed class с именем Chocolate, и объявили в ней три подкласса: White, Milk и Dark. Мы можем создать объект каждого подкласса следующим образом:
val chocolate1 = Chocolate.White()
val chocolate2 = Chocolate.Milk()
val chocolate3 = Chocolate.Dark()
Если мы попытаемся создать еще один подкласс, который унаследует от Chocolate, он вызовет ошибку компиляции.
Теперь мы можем использовать эти классы в своей программе, используя соответствующий шоколад в зависимости от пользователя или контента.
fun getChocolateType(chocolate: Chocolate): String {
return when (chocolate) {
is Chocolate.White -> "Bitter chocolate"
is Chocolate.Milk -> "Milk chocolate"
is Chocolate.Dark -> "Dark chocolate"
}
}
Это пример функции, которая принимает объект Chocolate и возвращает соответствующий тип шоколада в виде строки.
Таким образом, Sealed class в Kotlin позволяет определить ограниченное множество подклассов с целью обеспечения безопасности исходного кода, и может использоваться для определения списка принимаемых аргументов или свойств со связанными типами.