Intereting Posts
Общий расширяемый класс с сопутствующим объектом в Котлине Повторная установка + повтор RxJava с другой ссылкой Android Как установить множественные значения гравитации программно в Котлин? Использовать значение аргумента по умолчанию в вызове функции Kotlin Bluetooth-клиент Socket получает одинаковое исключение каждый раз Как использовать Kotlin coroutines wait () в главной теме 0xFF0000FF Целочисленный литерал не соответствует ожидаемому типу kotlin.Int Использовать ExpectedException с Kotlin Кодирование запроса почтальона Невозможно найти сеттер для поля – используя базу данных Kotlin с комнатой Мне нужен способ динамически, progammaticaly изменить фон для ImageView в представлении Recycler Каково использование :: оператора в Котлине? Kotlin Невозможно создать поле @Autowired в классе, которое аннотируется с @Configuration @EnableWebMvc Ошибка: (2, 0) Не удалось найти метод 'org.gradle.api.internal.file.DefaultSourceDirectorySet как получить доступ к данным arraylist в kotlin

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

В чем разница между 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