Нулевой объект является допустимым Kotlin шаблоном проектирования.
Когда вы используете этот шаблон, вы должны создать интерфейс и заставить его реализовывать как обычный класс (ы), так и нулевой объект. Кроме того, нулевой объект должен быть неизменным, как и все другие синглтоны.
Вот как вы можете реализовать шаблон проектирования пустых объектов в Kotlin:
interface Foo {
val param1: String
val param2: Int
}
object NullFoo : Foo {
override val param1: String get() = ""
override val param2: Int get() = 0
}
class FooImpl(override val param1: String, override var param2: Int) : Foo
В качестве альтернативы, вы можете использовать действительные значения null
и функции расширения (свойства) с обнуляемыми приемниками:
class Foo(val param1: String, var param2: Int)
val Foo?.param1: String get() = this?.param1 ?: ""
val Foo?.param2: Int get() = this?.param2 ?: 0