Buscador privado y establecedor público para una propiedad de Kotlin

¿Cómo hacer una propiedad en Kotlin que tenga un getter privado (o simplemente no la tenga) pero que tenga un setter público?

var status private get 

no funciona con un error: la Getter visibility must be the same as property visibility

En mi caso, el motivo es la interoperabilidad de Java: quiero que mi código Java pueda llamar a setStatus pero no a getStatus .

Es imposible en este momento en Kotlin tener una propiedad con un colocador que sea más visible que la propiedad. Hay un problema de layout del lenguaje en el rastreador de problemas al respecto, siéntase libre de mirar / votar por él o compartir sus casos de uso: https://youtrack.jetbrains.com/issue/KT-3110

En la versión actual de Kotlin (1.0.3), la única opción es tener un método setter separado como ese:

 class Test { private var name: String = "name" fun setName(name: String) { this.name = name } } 

Si desea restringir el acceso de bibliotecas externas al getter, puede usar internal modificador de visibilidad internal que le permite seguir usando la syntax de propiedad dentro de la biblioteca:

 class Test { internal var name: String = "name" fun setName(name: String) { this.name = name } } fun usage(){ val t = Test() t.name = "New" } 
  • Choque de statement de plataforma con comparable
  • Jinq en Kotlin: ¿cómo convertir lambda en Java Serialized Lambda?
  • Kotlin Vertx Type Mismatch encontrado Future <Unit> expected Handler <AsyncResult <Void >>
  • ¿Cómo implementar esta interfaz Java en Kotlin?
  • ¿Cómo usar SQLite en Kotlin / Native?
  • Llame al object Kotlin con la delegación de class de Java como método estático
  • Referencia no resuelta de Kotlin: println de gradle en la CLI
  • La inferencia del tipo Java lambda no funciona como se esperaba en Kotlin
  • Java -> Conversión de Kotlin con types crudos
  • Clases de datos en Kotlin
  • Kotlin, estructura del proyecto