Что такое открытое свойство? Почему я не могу сделать свой сеттер частным?

В чем разница между Property и Open Property в Котлине? В приведенном ниже кодере жалуется, что я объявляю setter private, и Intellij говорит, что частные настройки не разрешены для открытых свойств. Что такое открытое свойство?

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

Почему код выше недействителен, но этот код?

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

EDIT: Я использую плагин spring-allopen, и обозначение класса явно открытым не имеет никакого значения.

    Что такое открытое свойство?

    Открытое свойство, которое означает, что его getter / setter (?) Не является окончательным . С другой стороны, его геттер и сеттер могут быть переопределены его подклассами.

    В kotlin все объявлено конечным ключевым словом, кроме интерфейса , класса аннотаций , закрытого класса , класса enum , переменных , изменяемого поля поддержки свойств и параметров , но неизменные переменные & параметры являются эффектно-окончательными .

    Благодаря плагину allopen все свойства и методы будут открыты в пружинных компонентах.

    Однако свойство open не может создавать частный сеттер, если свойство открыто , например:

     //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 

    Поэтому вы должны сделать свойство окончательным явно, например:

     //v--- makes it final explicitly by `final` keyword final var value: String =""; private set