Size: a a a

Kotlin Community

2019 December 17

VS

Volodymyr Sch in Kotlin Community
Quantum Harmonizer
Воспрос что такое Nothing? Или почему он вывелся?
Первый вопрос что за конструкция Nothing..List<Nothing>
Почему перед List<Nothing> что-то похоже var-arg с жабы (Nothing..) ? нагуглить не смог

Ну и второй вопрос, как вызвать это с котлина?
источник

QH

Quantum Harmonizer in Kotlin Community
Volodymyr Sch
Первый вопрос что за конструкция Nothing..List<Nothing>
Почему перед List<Nothing> что-то похоже var-arg с жабы (Nothing..) ? нагуглить не смог

Ну и второй вопрос, как вызвать это с котлина?
Nothing..List<Nothing> — это flexible type
как вызвать — чёт мне кажется, что и в джаве только через сырые типы, иначе пора заводить баг на javac
источник

VS

Volodymyr Sch in Kotlin Community
Quantum Harmonizer
Nothing..List<Nothing> — это flexible type
как вызвать — чёт мне кажется, что и в джаве только через сырые типы, иначе пора заводить баг на javac
Да, так и есть, спасибо за инфу
источник

SG

Sergey Grushin in Kotlin Community
люди, привет. обьясните глупому, что студии не нравится
источник

SG

Sergey Grushin in Kotlin Community
сигнатуры же разные
источник

А

Александр in Kotlin Community
Sergey Grushin
люди, привет. обьясните глупому, что студии не нравится
Наверное что оба List
источник

SG

Sergey Grushin in Kotlin Community
Александр
Наверное что оба List
так а тип листа то разный же
источник

OY

Oleg Yukhnevich in Kotlin Community
Sergey Grushin
сигнатуры же разные
в bytecode - одинаковые, потому что дженерики стираются
повесь на одну из них @JvmName("mapToDb1")
источник

А

Александр in Kotlin Community
Дженерики же затираются
источник

AL

Alexander Levin in Kotlin Community
Sergey Grushin
люди, привет. обьясните глупому, что студии не нравится
Привет. TL/DR - параметр листа в JVM стирается. Решается с помощью JvmName. Подробнее тут:

https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#handling-signature-clashes-with-jvmname
источник

SG

Sergey Grushin in Kotlin Community
огромное спасибо!
источник

SG

Sergey Grushin in Kotlin Community
источник

VP

Vladimir Petrakovich in Kotlin Community
Sergey Grushin
сигнатуры же разные
Там же в подсказке даже написано, какие они на самом деле
источник

OY

Oleg Yukhnevich in Kotlin Community
Vladimir Petrakovich
Там же в подсказке даже написано, какие они на самом деле
но не все ещё умеют читать bytecode)
источник

SG

Sergey Grushin in Kotlin Community
Vladimir Petrakovich
Там же в подсказке даже написано, какие они на самом деле
ушел в котлин недоучив джаву
источник

SG

Sergey Grushin in Kotlin Community
не, ну, я понял что он не берет в счет типы листов. просто было интересно почему и как это решается
источник
2019 December 18

BP

Bogdan Panchenko in Kotlin Community
Sergey Grushin
не, ну, я понял что он не берет в счет типы листов. просто было интересно почему и как это решается
Ну Котлин видит разницу, а вот байт код джавы нет
источник

ch

central hardware in Kotlin Community
Bogdan Panchenko
Ну Котлин видит разницу, а вот байт код джавы нет
У котлине какой то особый байт-код?
источник

AE

Alexandr Emelyanov in Kotlin Community
central hardware
У котлине какой то особый байт-код?
не совсем. прям особый не сгенерируешь - иначе jvm не будет выполнять. просто там такие конструкции, которые в java код не всегда декомпилируются
источник

MK

Mark Kos in Kotlin Community
Sergey Grushin
не, ну, я понял что он не берет в счет типы листов. просто было интересно почему и как это решается
В jvm рантайме часто информация о дженериках теряется. Поэтому два листа с разной типизацией могут выглядить одинаково. Решение: назвать методы по разному, причем назвать их по разному можно с помощью @jvmname. Тогда использовпние из котлина будет как вы хотите, но в jvm это будут разные методы
источник