Jak używać 'backing fields' w Kotlinie?
sobes.tech AI
Odpowiedź od AI
Pola wsparcia ('backing fields') są automatycznie generowane przez kompilator podczas korzystania z domyślnych getterów/setterów i nie wymagają jawnej deklaracji. Służą do przechowywania wartości właściwości.
Jawne korzystanie z 'backing fields' jest potrzebne w rzadkich przypadkach, na przykład gdy chcesz dostosować getter lub setter i jednocześnie odwołać się do samej wartości właściwości, a nie do wywołania gettera, co może prowadzić do rekurencji.
Aby jawnie uzyskać dostęp do 'backing field' wewnątrz gettera lub settera, używa się identyfikatora field.
class MyClass {
var counter = 0 // Kompilator wygeneruje backing field dla tej właściwości
set(value) {
// Sprawdzenie warunku przed przypisaniem
if (value >= 0) {
// Jawy dostęp do backing field
field = value
}
}
}
'Backing field' nie jest generowany dla właściwości, jeśli nie ma właściwości, która go używa (np. dla właściwości abstrakcyjnych lub interfejsów), lub jeśli getter i setter są całkowicie dostosowane i nie korzystają z wygenerowanego przez kompilator 'backing field'.
Przykład, w którym 'backing field' nie jest generowany:
interface MyInterface {
val abstractProperty: String // Brak backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // Getter nie korzysta z backing field, brak backing field
}