Getters y Setters en Kotlin: ¿cómo declarar y usar propiedades con accessors personalizados?
¡Hola a todos! Recientemente comencé a estudiar Kotlin después de Java y me encontré con la falta de comprensión del funcionamiento de getters y setters. En Java, solía declarar explícitamente campos con modificadores de acceso y luego escribir métodos getField() y setField() para ellos. En Kotlin, según tengo entendido, todo es diferente: hay propiedades (properties) que generan automáticamente getters y setters.
// Ejemplo de mi intento
class Person {
var name: String = "Unknown"
var age: Int = 0
// Intento hacer un setter personalizado para age
set(value) {
if (value >= 0) {
// ¿Cómo accedo al campo aquí? ¿field? ¿O this.age?
this.age = value // ¡Esto causa recursión!
} else {
println("La edad no puede ser negativa")
}
}
}
Cuando ejecuto este código, obtengo un StackOverflowError debido a la recursión infinita. Entiendo que estoy haciendo algo mal, pero no puedo resolverlo: