#kotlin
Недавно обнаружил для себя несколько интересных применений object в Kotlin. Как ни странно, обо всех сказано в официальной документации, но на практике я не часто встречал их применение.
1️⃣Создание анонимного класса с нуля. Вдруг у вас будут кейсы (если подскажите, какие, то буду рад), когда вам необходимо создать объект с нуля без объявления класса. Вот пример:
val helloWorld = object {
val hello = "Hello"
val world = "World"
// object expressions extend Any, so override is required on toString()
override fun toString() = "$hello $world"
}А ещё можно сделать вот такие мудрёные конструкции:
open class A(x: Int) {
public open val y: Int = x
}
interface B { /*...*/ }
val ab: A = object : A(1), B {
override val y = 15
}2️⃣ Object как Singleton — довольно распространённый кейс, когда вы делаете аналог синглтона Java в Kotlin.
3️⃣ Data objects — экспериментальная, но любопытная фича, позволяющая делать так:
data object MyObject
fun main() {
println(MyObject) // MyObject
}А посмотреть все применения Object можно как раз в статье. 🤓