Junior — Middle
Lehetőség van tulajdonságok deklarálására osztálydefiníción kívül a Kotlin nyelvben?
sobes.tech MI
Válasz az MI-től
Kotlinban általában a tulajdonságokat a osztálydefinícióban deklarálják. Azonban, ha a osztályon kívül szeretnél tulajdonságot hozzáadni, akkor használhatod a kiterjesztéseket (extension properties).
A kiterjesztések lehetővé teszik, hogy új tulajdonságokat vagy függvényeket adjunk meglévő osztályokhoz anélkül, hogy módosítanánk a forráskódjukat.
Példa egy osztályon kívüli kiterjesztett tulajdonságra:
class User(val name: String)
// Kiterjesztett tulajdonság az osztályon kívül
val User.firstChar: Char
get() = this.name.first()
fun main() {
val user = User("Anna")
println(user.firstChar) // 'A' kiírása
}
Fontos: a kiterjesztett tulajdonságok nem tartalmazhatnak állapotot (backing field), ezért csak számítottak lehetnek (csak getterrel vagy getterrel és setterrel, de mező nélkül).
Így a tulajdonságokat az osztálydefiníción kívül kiterjesztéseken keresztül lehet deklarálni, de korlátozásokkal.