Size: a a a

Kotlin Community

2020 April 09

BP

Bogdan Panchenko in Kotlin Community
С состоянием
источник

AP

Alexey Pushkarev in Kotlin Community
Bogdan Panchenko
В идее alt + insert (может контер давно не генерил)
а, ты про автогенерацию кода, да понял, знаю такое. Видимо все таки не надо делать датаклассом
источник

AP

Alexey Pushkarev in Kotlin Community
Bogdan Panchenko
Это очень плохо, если я создам ещё один такой объект с такими же параметрами то он не будет равен старому, а от датакласса с val я всё-таки этого жду
но да, я так и задумывал что каждый новый объект не будет равен предыдущему даже с одинаковыми параметрами
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexey Pushkarev
понятно, то есть получается мой класс мутабельный таки?
Он не мутабельный, но имеет состояние кроме полей конструктора, что неправильно. Если бы оно вычислялось исключительно из этих полей, было бы норм
источник

Y

Yevhen in Kotlin Community
https://discuss.kotlinlang.org/t/private-setter-for-var-in-primary-constructor/3640

что что использует на этот счет ? просто переменную и гет метод или есть красивей что-то?
источник

VP

Vladimir Petrakovich in Kotlin Community
У вас дата-классы?
источник

Y

Yevhen in Kotlin Community
Vladimir Petrakovich
У вас дата-классы?
хочу сделать такую переменную с прайват сетером не в дата классе
источник

VP

Vladimir Petrakovich in Kotlin Community
Yevhen
хочу сделать такую переменную с прайват сетером не в дата классе
Не в дата-классе это делается не так уж сложно, чтобы страдать 🤷‍♂️
Ну то есть вынести в тело класса - это вполне норм. Поля в конструкторе для самых простых (но частых) случаев.
На джаве вон и этого не было 😄
источник

AL

Alexander Levin in Kotlin Community
Yevhen
хочу сделать такую переменную с прайват сетером не в дата классе
Ну идея наверное такая:

non-data class:
class Foo(foo: Int) {
   var foo: Int = foo
       private set
}


data class

data class Foo(private var fooField: Int) {
   val foo get() = fooField
}
источник

Y

Yevhen in Kotlin Community
Alexander Levin
Ну идея наверное такая:

non-data class:
class Foo(foo: Int) {
   var foo: Int = foo
       private set
}


data class

data class Foo(private var fooField: Int) {
   val foo get() = fooField
}
куль спасибо непонятно почему до этого private set не работало
источник

I

Ivan in Kotlin Community
Кто-нибудь сравнивал работу
@Synchronized
и
synchronized(lock) { }
? Интересно в контексте синхронизации методов целиком. Судя по байт-коду,
synchronized(lock) { }
генерирует несколько объявлений перед блоком синхронизации, которые не атомарны. И вызов метода содержащего внутри такой блок еще не гарантирует, что тут же будет выполнена блокировка и есть возможность другому потоку успеть вызвать другой синхронизированный метод. Так?
Столкнулся с ситуацией, что в тело метода попасть успеваю, но в блок синхронизации нет и другой поток успевает вызвать другой синхронизированный метод...
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
Кто-нибудь сравнивал работу
@Synchronized
и
synchronized(lock) { }
? Интересно в контексте синхронизации методов целиком. Судя по байт-коду,
synchronized(lock) { }
генерирует несколько объявлений перед блоком синхронизации, которые не атомарны. И вызов метода содержащего внутри такой блок еще не гарантирует, что тут же будет выполнена блокировка и есть возможность другому потоку успеть вызвать другой синхронизированный метод. Так?
Столкнулся с ситуацией, что в тело метода попасть успеваю, но в блок синхронизации нет и другой поток успевает вызвать другой синхронизированный метод...
Если в методе перед synchronized нет вашего кода, то как вы можете заметить отличие?
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
Если в методе перед synchronized нет вашего кода, то как вы можете заметить отличие?
занимался отладкой одного бага и вставлял логирование, понятно, что оно вносит некоторые корректировки, но поведение было идентично тому, что происходило до лога. Сделал decompile котлиновского байт-кода и там видно создание объектов + проверка передаваемого параметра
источник

I

Ivan in Kotlin Community
источник

I

Ivan in Kotlin Community
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
занимался отладкой одного бага и вставлял логирование, понятно, что оно вносит некоторые корректировки, но поведение было идентично тому, что происходило до лога. Сделал decompile котлиновского байт-кода и там видно создание объектов + проверка передаваемого параметра
Так а в чём проблема, ваш код же внутри блока синхронизации?
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
Так а в чём проблема, ваш код же внутри блока синхронизации?
в том, что вызов метода не гарантирует, что поток доберется до блока синхронизации первым.
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
в том, что вызов метода не гарантирует, что поток доберется до блока синхронизации первым.
А на что влияет попадание в тело метода?
источник

..

... ... in Kotlin Community
Господа, назрел вопрос. Прочитал пару источников по поводу androidx так и не понял толком с чем ее едят. Не могли бы вы поделится источниками где взять инфу?
источник

VP

Vladimir Petrakovich in Kotlin Community
... ...
Господа, назрел вопрос. Прочитал пару источников по поводу androidx так и не понял толком с чем ее едят. Не могли бы вы поделится источниками где взять инфу?
источник