Junior
Mit tudsz mondani a tulajdonságokról, valamint a get és set módszerekről Kotlinban?
sobes.tech MI
Válasz az MI-től
Kotlinben a tulajdonságok egy mező és a hozzá tartozó getter és setter kombinációját képezik.
Tulajdonság definíció:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Itt a mutableProperty egy módosítható tulajdonság alapértelmezett getterrel és setterrel. Az immutableProperty egy változatlan tulajdonság csak alapértelmezett getterrel.
Explicit getter és setter definíció:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Egyedi getter
set(value) {
field = value.toLowerCase() // Egyedi setter
}
val computedProperty: Int
get() = (1..10).random() // Számított tulajdonság, nincs mező
}
field- a mezőre való hivatkozás a getter és setter belsejében. Csak módosítható tulajdonságok (var) esetén használható.- A getterek és setterek testreszabhatók, további logikát hajthatnak végre a hozzáférés vagy módosítás során.
- Számított tulajdonságok (
computedProperty) nem rendelkeznek saját mezővel, értéküket minden hozzáféréskor számítják.
Főbb pontok:
- Kotlinben nem szükséges minden mezőhöz explicit getter és setter, ezek automatikusan generálódnak.
- A tulajdonságokat pontnotációval (
példa.tulajdonságNev) lehet elérni. - Az explicit getter és setter lehetővé teszi, hogy logikát adjunk hozzá a hozzáféréshez vagy módosításhoz.
- A
valtípusú tulajdonságok getterjeinek mindig ugyanazt a típusú értéket kell visszaadniuk. - A
vartípusú tulajdonságok setterjei ugyanazon típusú paramétert fogadnak.
Különbség a Kotlin tulajdonságok és a Java mezők+metódusok között:
| Kotlin Tulajdonság | Java Mező + Metódusok | Leírás |
|---|---|---|
var tulajdonságom: Típus |
private Típus tulajdonságom; + public Típus getTulajdonságom() + public void setTulajdonságom(Típus érték) |
Módosítható tulajdonság automatikus getterrel és setterrel. |
val tulajdonságom: Típus |
private Típus tulajdonságom; + public Típus getTulajdonságom() |
Változtathatatlan tulajdonság csak automatikus getterrel. |
| Egyedi getter/setter | Kézi logika írása | Egyedi logika hozzáadása a hozzáféréshez vagy módosításhoz. |
| Számított tulajdonság | Kifejezett metódus, ami értéket ad vissza | A tulajdonság értéke minden kéréskor számítódik. |