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" } 
  • ¿Cómo se usa Flowable.generate de Kotlin?
  • Arquitectura del propio SDK - API de método asíncrono en Kotlin
  • Kotlin: atribuye visibilidad al object complementario
  • ¿Cómo implementar esta interfaz Java en Kotlin?
  • Clase abstracta Kotlin java IllegalAccessError
  • Sintaxis de Kotlin para inferir supertipo genérico de subtipo
  • Kotlin: No se puede usar GenericTypeIndicator para llamar al getValue de Firebase Database
  • Conversión de la implementación Thread / Runnable de Java a Kotlin
  • ¿Cómo usar SQLite en Kotlin / Native?
  • ¿Por qué algunos methods de configuration de Java se convierten automáticamente en properties de Kotlin pero otros no?
  • ¿Cómo puedo declarar un parámetro de function que puede ser una cadena o una function en Kotlin?