Junior
Ko vari pastāstīt par īpašībām un arī get un set metodēm Kotlin?
sobes.tech AI
Atbilde no AI
Kotlin īpašības ir kombinācija starp lauku un atbilstošo ģeneratoru un iestatītāju.
Īpašības definīcija:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Šeit mutableProperty ir maināma īpašība ar noklusējuma ģeneratoru un iestatītāju. immutableProperty ir nemaināma īpašība tikai ar ģeneratoru.
Skaidra ģeneratora un iestatītāja definīcija:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Lietotāja ģenerators
set(value) {
field = value.toLowerCase() // Lietotāja iestatītājs
}
val computedProperty: Int
get() = (1..10).random() // Aprēķināma īpašība, bez lauka
}
field- atsauce uz īpašības lauku ģeneratora un iestatītāja iekšienē. To izmanto tikai maināmām īpašībām (var).- Ģeneratori un iestatītāji var būt pielāgoti, veicot papildu loģiku piekļuvei vai izmaiņām.
- Aprēķināmās īpašības (
computedProperty) nav ar savu lauku un vienmēr aprēķina vērtību pie piekļuves.
Galvenie punkti:
- Kotlin nav nepieciešams skaidri izveidot ģeneratorus un iestatītājus katram laukam, kā Java. Tie tiek automātiski ģenerēti.
- Īpašības ir pieejamas caur punktu notāciju (
instance.propertyName). - Skaidra ģeneratora un iestatītāja definīcija ļauj pievienot papildu loģiku.
valīpašībām ģenerators vienmēr jāatgriež to pašu tipu.varīpašību iestatītājs pieņem to pašu tipu.
Salīdzinājums īpašībām Kotlin un laukiem + metodēm Java:
| Kotlin īpašība | Java lauks + metodes | Apraksts |
|---|---|---|
var myProperty: Tips |
private Tips myProperty; + public Tips getMyProperty() + public void setMyProperty(Tips value) |
Maināma īpašība ar automātisku ģeneratoru un iestatītāju. |
val myProperty: Tips |
private Tips myProperty; + public Tips getMyProperty() |
Nemaināma īpašība tikai ar ģeneratoru. |
| Pielāgots ģenerators/iestatītājs | Rokā rakstīts loģika | Papildu loģikas pievienošana piekļuvei vai izmaiņām. |
| Aprēķināma īpašība | Metode, kas atgriež vērtību | Vērtība tiek aprēķināta katru piekļuvi. |