Size: a a a

Kotlin Community

2020 February 14

B

Beholder in Kotlin Community
В Java же я могу сделать так: https://pastebin.com/Mq0vndec
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну так это abstract val и override var private set
источник

AM

Andrew Mikhaylov in Kotlin Community
Так можно и в котлине
источник

VP

Vladimir Petrakovich in Kotlin Community
А, final можно только property целиком сделать, да?
источник

AM

Andrew Mikhaylov in Kotlin Community
Да, ЕМНИП
источник

B

Beholder in Kotlin Community
Andrew Mikhaylov
Так можно и в котлине
Как это написать в Kotlin без backing field?
источник

RI

Ruslan Ibragimov in Kotlin Community
Так в котлине тоже можно сделать
источник

B

Beholder in Kotlin Community
Ruslan Ibragimov
Так в котлине тоже можно сделать
Тут сеттер public получается, его кто угодно вызвать сможет
источник

AM

Andrew Mikhaylov in Kotlin Community
Можно ж вместо отдельного метода private set с телом, нет?
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну да, он финальный будет
источник

AM

Andrew Mikhaylov in Kotlin Community
Если ElementImpl, прости господи, дальше наследовать надо, да с возможностью переопределить геттер -- увы.
источник

RI

Ruslan Ibragimov in Kotlin Community
Beholder
Тут сеттер public получается, его кто угодно вызвать сможет
Ну если через интерфейс работать, то никто не увидит что там вообще var есть
источник

VP

Vladimir Petrakovich in Kotlin Community
Ruslan Ibragimov
Ну если через интерфейс работать, то никто не увидит что там вообще var есть
Наследник увидит же
источник

VP

Vladimir Petrakovich in Kotlin Community
Ruslan Ibragimov
Так в котлине тоже можно сделать
Вот это плюс private set должно работать как задумано
источник

B

Beholder in Kotlin Community
В итоге всё-таки сделал вот так https://pastebin.com/695P3qbV , но это два свойства вместо одного, некрасиво как-то
источник

B

Beholder in Kotlin Community
Vladimir Petrakovich
Вот это плюс private set должно работать как задумано
Не, будет опять то же самое Private setters are not allowed for open properties
источник

VP

Vladimir Petrakovich in Kotlin Community
Beholder
Не, будет опять то же самое Private setters are not allowed for open properties
А, точно
источник

VP

Vladimir Petrakovich in Kotlin Community
Ну что ж, тогда только так 🤷‍♂
источник

B

Beholder in Kotlin Community
Короче, в этом случае выразительные способности Kotlin как-то недотягивают до возможностей Java
источник

RI

Ruslan Ibragimov in Kotlin Community
Имхо делать мутабельным то что спрятано за val не лучшая практика, лучше уже сделать просто метод и реализация проще будет и сематика
источник