¿Qué es una propiedad abierta? ¿Por qué no puedo hacer que su setter sea privado?

¿Cuál es la diferencia entre una propiedad y una propiedad abierta en Kotlin? El siguiente código se queja de que declaro que el colocador es privado e Intellij dice que los instaladores privados no están autorizados para las properties abiertas . ¿Qué es una propiedad abierta?

@RestController open class ParameterController { @Autowinetworking lateinit var parameterRepository: ParameterRepository private set //error } 

¿Por qué el código anterior no es válido pero este código es?

 open class ItemPrice{ lateinit var type: String private set // ok } 

EDITAR: Estoy usando el complemento de resorte-allopen, y marcar la class explícitamente como abierto no hace la diferencia.

¿Qué es una propiedad abierta?

Una propiedad abierta que significa que getter / setter (?) No es definitiva . Por otro lado, su getter & setter puede ser anulado por sus subclasss.

En kotlin, todo se declara con la palabra key final, excepto la interfaz , la class de anotación , la class sellada , la class enum , las variables , el campo de respaldo de la propiedad mutable y los parameters , pero las variables y los parameters inmutables son efectivamente definitivos .

Debido al plugin allopen , todas las properties y methods se abrirán en los componentes del resorte.

Sin embargo, una propiedad abierta no puede crear un setter privado , si la propiedad se abre , por ejemplo:

 //v--- allopen plugin will remove all `final` keyword, it is equivalent to `open` open var value: String=""; private set // ^--- ERROR:private set are not allowed 

Por lo tanto, debe hacer que la propiedad sea definitiva explícitamente, por ejemplo:

 //v--- makes it final explicitly by `final` keyword final var value: String =""; private set 
  • Cómo usar la dependency injection en las testings de Spek
  • Referencias inyectadas de spring en Kotlin
  • 'Mono.and ()' no se puede llamar con los parameters proporcionados
  • Usar un object Kotlin en una class generada en time de ejecución
  • JUnit, @ControllerAdvice y la falta de excepciones marcadas en Kotlin
  • Excepción de puntero nulo en Spring Proxy Class y Kotlin
  • Enfoque correcto para la class de Kotlin inyectada de constructor inmutable
  • ¿Hay alguna manera de implementar la pagination en spring webflux y spring datos reactivos
  • Kotlin no puede crear el campo @Autowinetworking en Class anotado con @Configuration @EnableWebMvc
  • Configuración de security de spring de Kotlin
  • Spring Boot: no puede include recurso estático