Size: a a a

Kotlin Community

2019 November 11

M

Mi in Kotlin Community
А есть где-нибудь подробное описание того, при каких случаях инлайн классы боксятся?
источник

QH

Quantum Harmonizer in Kotlin Community
когда ничего другого нельзя сделать, тогда и боксятся ;)
источник

M

Mi in Kotlin Community
Quantum Harmonizer
когда ничего другого нельзя сделать, тогда и боксятся ;)
Так а описание есть где-то?
источник

КР

Кирилл Романенко in Kotlin Community
Mi
А есть где-нибудь подробное описание того, при каких случаях инлайн классы боксятся?
А расскажите, как боксятся инлайн классы? Я знаю про боксинг примитивов. Можно боксить любой тип?
источник

QH

Quantum Harmonizer in Kotlin Community
Mi
Так а описание есть где-то?
Не встречал)
источник

VP

Vladimir Petrakovich in Kotlin Community
Кирилл Романенко
А расскажите, как боксятся инлайн классы? Я знаю про боксинг примитивов. Можно боксить любой тип?
Инлайн классы по задумке не отличаются от java.lang.Integer и прочих встроенных обёрток для примитивов.
источник

КР

Кирилл Романенко in Kotlin Community
Vladimir Petrakovich
Инлайн классы по задумке не отличаются от java.lang.Integer и прочих встроенных обёрток для примитивов.
А если я делаю инлайн класс не для примитива?
источник

KZ

Konstantin Zolotov in Kotlin Community
Кирилл Романенко
А расскажите, как боксятся инлайн классы? Я знаю про боксинг примитивов. Можно боксить любой тип?
Да примерно так же. В идеале, для класса-обертки не должно быть сгенерено инстанса и он фактически представлен значением, что в него заталкивают. Но такое работает не всегда и иногда все же обертка генерится.
источник

QH

Quantum Harmonizer in Kotlin Community
Кирилл Романенко
А расскажите, как боксятся инлайн классы? Я знаю про боксинг примитивов. Можно боксить любой тип?
Боксятся при апкастинге. В том числе при кастинге к тайп-параметру, т. к. они стираются.
источник

VP

Vladimir Petrakovich in Kotlin Community
Кирилл Романенко
А если я делаю инлайн класс не для примитива?
Ну суть та же по идее, но могут быть отличия
источник

КР

Кирилл Романенко in Kotlin Community
Konstantin Zolotov
Да примерно так же. В идеале, для класса-обертки не должно быть сгенерено инстанса и он фактически представлен значением, что в него заталкивают. Но такое работает не всегда и иногда все же обертка генерится.
Я примерно так и думал. :) Спасибо. :)
источник

M

Mi in Kotlin Community
хотя в принципе в официальной документации нормально расписано
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
Короче, я понял, почему Array.map возвращает List. Потому что для создания массива нужен reified тип 😢
нафиг интероп, хочу стёртые типы у массивов
Я вообще думаю, что Array<> - это стратегическая ошибка. Лучше бы его к листу сразу компилятором приводили
источник

AN

Alexander Nozik in Kotlin Community
central hardware
Серьезно?
Серьезно
источник

M

Mi in Kotlin Community
Alexander Nozik
Я вообще думаю, что Array<> - это стратегическая ошибка. Лучше бы его к листу сразу компилятором приводили
Выпиливать фичу платформы просто потому что листы удобнее?
источник

VP

Vladimir Petrakovich in Kotlin Community
Mi
Выпиливать фичу платформы просто потому что листы удобнее?
Эта фича платформы плохо дружит с дженериками, поэтому как ни крути, будет боль
источник

AN

Alexander Nozik in Kotlin Community
Mi
Выпиливать фичу платформы просто потому что листы удобнее?
Ну примитивы как-то выпилили же? Здесь точно то же самое, сделать специальные кейсы, где лист транслируется в массив компилятором.
источник

QH

Quantum Harmonizer in Kotlin Community
Alexander Nozik
Я вообще думаю, что Array<> - это стратегическая ошибка. Лучше бы его к листу сразу компилятором приводили
ИМХО, Array<> нужен, но как инлайн-класс над Object[], реализующий List. Просто когда его делали, инлайн-классов ещё и в проекте не было)
источник

QH

Quantum Harmonizer in Kotlin Community
Alexander Nozik
Ну примитивы как-то выпилили же? Здесь точно то же самое, сделать специальные кейсы, где лист транслируется в массив компилятором.
а ещё есть массивы примитивов...
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
ИМХО, Array<> нужен, но как инлайн-класс над Object[], реализующий List. Просто когда его делали, инлайн-классов ещё и в проекте не было)
Ключевое слово - реализующий лист
источник