Avatar ·

Kotlin: cómo hacer un getter público pero un setter privado para una propiedad

¡Hola! Acabo de empezar a aprender Kotlin y vengo de Java. En Java solía hacer campos con setter privado y getter público, por ejemplo: ```java private String name; public String getName() { return name; } private void setName(String name) { this.name = name; } ``` Pero en Kotlin veo que las propiedades (var) crean automáticamente tanto getter como setter. Si escribo `var name: String`, tanto el getter como el setter se vuelven públicos. Y si uso `val name: String`, la propiedad es de solo lectura — no hay setter en absoluto. Necesito que la propiedad se pueda leer desde cualquier lugar (getter público), pero modificar su valor solo dentro de la clase (setter privado). ¿Cómo se hace esto correctamente en Kotlin? He intentado escribir `private var name: String`, pero entonces el getter también se vuelve privado y no puedo leer la propiedad desde fuera. He probado diferentes combinaciones de modificadores de acceso antes de `var` y dentro de `set`, pero me he confundido. Por favor, indíquenme cómo declarar una propiedad con un getter público y un setter privado en Kotlin.