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
  • Ejecutando el código de kotlin dentro de un proyecto de Java
  • ¿No puede haber una devolución dentro de un Runnable SAM en Kotlin?
  • ¿Cómo usar SQLite en Kotlin / Native?
  • Java -> Conversión de Kotlin con types crudos
  • Clases de datos en Kotlin
  • Pasar un object detector como un parámetro de function en kotlin
  • Mocking methods de Kotlin con Java + Mockito
  • Jinq en Kotlin: ¿cómo convertir lambda en Java Serialized Lambda?
  • Kotlin utiliza la interfaz de callback de Java
  • Acceso a la function de extensión de Kotlin Campo privado de Java