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" } 
  • Kotlin: No se puede usar GenericTypeIndicator para llamar al getValue de Firebase Database
  • Arquitectura del propio SDK - API de método asíncrono en Kotlin
  • ¿Cómo implementar esta interfaz Java en Kotlin?
  • ¿Conversión de Kotlin SAM con una interfaz Java interna privada?
  • Anular setter para la variable definida en el constructor pnetworkingeterminado
  • Llame al object Kotlin con la delegación de class de Java como método estático
  • String :: toByteArray () no se comstack en Kotlin
  • Kotlin, estructura del proyecto
  • Choque de statement de plataforma con comparable
  • Kotlin: cómo pasar la matriz a la anotación de Java
  • ¿Cómo se usa Flowable.generate de Kotlin?