Size: a a a

Kotlin Community

2020 June 12

VS

Vladimir Sitnikov in Kotlin Community
Vladimir Petrakovich
А вообще поможет unchecked cast
Ты про @SuppressWarnings("UNCHCKED_CAST") ?

Warning’а-то нет, поэтому и suppress не работает.
источник

VP

Vladimir Petrakovich in Kotlin Community
Vladimir Sitnikov
Ты про @SuppressWarnings("UNCHCKED_CAST") ?

Warning’а-то нет, поэтому и suppress не работает.
Так unchecked cast'а нет, вот и warning'а нет. Надо поиграться с дженериками.
источник

VS

Vladimir Sitnikov in Kotlin Community
Vladimir Petrakovich
Интересная штука, надо запомнить
Вернее, даже так:

inline fun <reified T> T?.toPlatformType(): T = Function.identity<T>().apply(this)
источник

VP

Vladimir Petrakovich in Kotlin Community
Vladimir Petrakovich
Так unchecked cast'а нет, вот и warning'а нет. Надо поиграться с дженериками.
Но, возможно, в этой ситуации не получится
источник

VP

Vladimir Petrakovich in Kotlin Community
Vladimir Sitnikov
Вернее, даже так:

inline fun <reified T> T?.toPlatformType(): T = Function.identity<T>().apply(this)
А так разве не будет проверки на выходе из этой функции?
источник

VS

Vladimir Sitnikov in Kotlin Community
Vladimir Petrakovich
А так разве не будет проверки на выходе из этой функции?
Платформенные типы не проверяются, в этом их прелесть
источник

VP

Vladimir Petrakovich in Kotlin Community
А вот моё решение:
https://pl.kotl.in/B5comxWHK
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
А вот моё решение:
https://pl.kotl.in/B5comxWHK
👍
источник

BP

Bogdan Panchenko in Kotlin Community
А не все ок)
источник

VP

Vladimir Petrakovich in Kotlin Community
Vladimir Sitnikov
Платформенные типы не проверяются, в этом их прелесть
Ну где-то на границе они должны проверяться. Но если значение сразу передаётся обратно в джаву, то наверное прокатит.
источник

D

Denys in Kotlin Community
Vladimir Petrakovich
А вот моё решение:
https://pl.kotl.in/B5comxWHK
Интересно, почему если в теле интерфейса так делать - ClassCastException?
источник

VP

Vladimir Petrakovich in Kotlin Community
Denys
Интересно, почему если в теле интерфейса так делать - ClassCastException?
А в теле интерфейса - это как?
источник

D

Denys in Kotlin Community
Denys
У меня отак https://pl.kotl.in/pfbLjaR71

Exception in thread "main" kotlin.TypeCastException: null cannot be cast to non-null type kotlin.String
^^
источник

VS

Vladimir Sitnikov in Kotlin Community
Похоже, тут дело в том, что нужно кастовать к generic-типу, тогда вместо проверки будет warning, который и можно скрыть через suppress
источник

D

Denys in Kotlin Community
А, type erasure же. Да, вероятно. :)
источник

D

Denys in Kotlin Community
Отличный пазлер. :)
источник

VP

Vladimir Petrakovich in Kotlin Community
А, ну так это не unchecked cast, котлин проверит на null на месте, как всегда
источник

D

Denys in Kotlin Community
Vladimir Petrakovich
А, ну так это не unchecked cast, котлин проверит на null на месте, как всегда
Тоже верно. Напомните, почему это вообще компилируется? :)
источник

VP

Vladimir Petrakovich in Kotlin Community
Denys
Тоже верно. Напомните, почему это вообще компилируется? :)
Так валидный код же 😄
источник

VP

Vladimir Petrakovich in Kotlin Community
Мой пример компилируется с предупреждением
источник