with method from companion array java kotlin kotlin-interop

java - method - Getter privado y establecimiento público para una propiedad de Kotlin



kotlin:: class java (2)

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

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

Si desea restringir el acceso de las bibliotecas externas al captador, puede utilizar internal modificador de visibilidad internal que le permite seguir utilizando la sintaxis 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 hacer que una propiedad en Kotlin tenga un captador privado (o simplemente no la tenga) pero tenga un organismo 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 setter que sea más visible que la propiedad. Hay un problema de diseño de idioma en el rastreador de problemas, siéntase libre de verlo / votar o compartir sus casos de uso: https://youtrack.jetbrains.com/issue/KT-3110