Como usar 'backing fields' em Kotlin?
sobes.tech IA
Resposta da IA
Os campos de apoio ('backing fields') são gerados automaticamente pelo compilador ao usar getters/setters padrão e não requerem declaração explícita. São usados para armazenar o valor da propriedade.
O uso explícito de 'backing fields' é necessário em casos raros, por exemplo, quando se deseja personalizar um getter ou setter e ao mesmo tempo fazer referência ao valor da própria propriedade, em vez de chamar o getter, o que pode levar a uma recursão.
Para acessar explicitamente o 'backing field' dentro de um getter ou setter, usa-se o identificador field.
class MyClass {
var counter = 0 // O compilador gerará um backing field para esta propriedade
set(value) {
// Verificação de condição antes de atribuir
if (value >= 0) {
// Acesso explícito ao backing field
field = value
}
}
}
O 'backing field' não é gerado para uma propriedade se não houver uma propriedade que o utilize (por exemplo, para propriedades abstratas ou de interface), ou se o getter e o setter estiverem completamente personalizados e não usarem o 'backing field' gerado pelo compilador.
Exemplo onde o 'backing field' não é gerado:
interface MyInterface {
val abstractProperty: String // Sem backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // O getter não usa backing field, não há backing field
}