Size: a a a

Kotlin Community

2019 November 21

V

Vadim Pikha in Kotlin Community
Никита ✓
А почему Kotlin не умеет в получение class.java у дженерика в рантайме?
Задача: есть класс Repository<T>
Надо json привести к T
Взял для этого gson. Но только в результате, я не могу получить класс у дженерика, а получение Type из TypeToken тоже не работает с gson, кидается ошибка com.google.gson.internal.LinkedTreeMap cannot be cast to *ClassName*.

Как можно это красиво обыграть?
reified?
источник

Sergey λ in Kotlin Community
Vadim Pikha
reified?
не для класса
источник

V

Vadim Pikha in Kotlin Community
Sergey λ
не для класса
а, точно) хм, интересно как с класом такое провернуть
источник

VP

Vladimir Petrakovich in Kotlin Community
Vadim Pikha
а, точно) хм, интересно как с класом такое провернуть
Руками Class/KClass сохранять например
источник

Н

Никита ✓ in Kotlin Community
Vladimir Petrakovich
Руками Class/KClass сохранять например
ну вот я так и сделал, передаю в конструктор непосредственно Class<T>, но надеялся что можно как-то избежать этого)
источник

AL

Alexander Levin in Kotlin Community
Никита ✓
ну вот я так и сделал, передаю в конструктор непосредственно Class<T>, но надеялся что можно как-то избежать этого)
inline fun <reified T> YourClass.Companion.invoke() = YourClass(T::class)

Это расширением, можно конечно явно в компаньоне класса прописать.
источник

KK

Kirill Kabanov in Kotlin Community
Всем привет!
Кто может подсказать как определить в kotlin параметр метода в виде любого enum который имплементит определёный интерфейс?
пытаюсь сделать так:
fun get(e: Enum<out Marker>): String {
   return e.javaClass.name
}
но получаю ошибку
Type argument is not within its bounds.
Expected: Enum<out Marker>
Found: Marker

у кого нибудь есть мысли на этот счёт?
источник

VP

Vladimir Petrakovich in Kotlin Community
Kirill Kabanov
Всем привет!
Кто может подсказать как определить в kotlin параметр метода в виде любого enum который имплементит определёный интерфейс?
пытаюсь сделать так:
fun get(e: Enum<out Marker>): String {
   return e.javaClass.name
}
но получаю ошибку
Type argument is not within its bounds.
Expected: Enum<out Marker>
Found: Marker

у кого нибудь есть мысли на этот счёт?
Как-то так: fun get(e: E): String where E : Enum<E>, E : Marker
источник

KK

Kirill Kabanov in Kotlin Community
ругается с текстом: "Type constraints are not allowed when no type parameters declared" и подчёркивает всё до конца строки начиная с "where"
источник

VP

Vladimir Petrakovich in Kotlin Community
Kirill Kabanov
ругается с текстом: "Type constraints are not allowed when no type parameters declared" и подчёркивает всё до конца строки начиная с "where"
А, в начале fun <E> забыл
источник

KK

Kirill Kabanov in Kotlin Community
ну компилиться по крайней мере началось - благодарю, плюс в карму!!
источник

AE

Alexandr Emelyanov in Kotlin Community
Vladimir Petrakovich
Руками Class/KClass сохранять например
либо сделать наследника
источник

D

Dmitry in Kotlin Community
Посоветуйте пример, где определенные ошибки на корутинах отлавливаются? У меня некоторые операции выполняются параллельно и через асинк, если одна операция - запускаун ее в ланч. Но у этих двух билдеров разное поведение по обработке ошибок. Так и не понял, как централизованно подсунуть обработку ошибок, чтобы не отлавливать ее в каждом потомке корутины отдельно, но и не отменять предка.
источник

D

Dmitry in Kotlin Community
Читаю доки - очень много теории, но в голове каша получается из разных кейсов.
источник

ЛЛ

Лёша Лазарев in Kotlin Community
Dmitry
Читаю доки - очень много теории, но в голове каша получается из разных кейсов.
мб указать ExcpetionHandler при создании скоупа?
источник

ЛЛ

Лёша Лазарев in Kotlin Community
источник

M

Max in Kotlin Community
Всем привет!

Помогите пожалуйста кто может. Програмируйю много лет ООП на плюсах и тут меня неожидано кинули на ФП в  Котлин, Ява  и Грэдл...короче для меня пока полный мрак :-(
Проблема: есть некий Ява класс который я запускаю из майн Котлин класса и который общаетса с моим клиентом через (в клиенте) реализованый обсервер интерфейс. Пока всё ок.
Проблема в том, что Ява дёргает мой интерфейс коллбэк из своего working thread, что делает последующую обработку, скажем так, немного проблематичной.
Вот ищю и немогу понять, как отсюда опять попасть (передать управление) в main thread клиента?  
(Ява класс -> org.snmp4j.Snmp, интерфейс -> org.snmp4j.util.TreeListener)

Заранее огромное спасибо!
источник

ІЧ

Ів∆н Чернухін in Kotlin Community
ООП на плюсах?
источник

ІЧ

Ів∆н Чернухін in Kotlin Community
Лично для меня это мрак и боль:(
источник

M

Max in Kotlin Community
😂
источник