Size: a a a

Kotlin Community

2020 March 27

PE

Pavel Erokhin in Kotlin Community
val s: IConfiguration<*> = it.createInstance() as IConfiguration<*> // it - kclass

и поменял object на class у класса который дочерний по отношению к IConf...
источник

PE

Pavel Erokhin in Kotlin Community
Ну оно заработало
источник

AM

Andrew Mikhaylov in Kotlin Community
👍
источник

PE

Pavel Erokhin in Kotlin Community
А почему простой каст через as не сработал с object?
источник

PE

Pavel Erokhin in Kotlin Community
Ну я просто не знаю
источник

Na

Naimi ayoub in Kotlin Community
👍
источник

AO

Alexey Otts in Kotlin Community
Pavel Erokhin
А почему простой каст через as не сработал с object?
Вам стоит почитать что такое Class
источник

AM

Andrew Mikhaylov in Kotlin Community
Pavel Erokhin
А почему простой каст через as не сработал с object?
Вы из класса объект, грубо говоря, получили методом создания инстанса
источник

AM

Andrew Mikhaylov in Kotlin Community
Для обжектов в рантайме всё ещё есть отдельно класс, отдельно объект
источник

AM

Andrew Mikhaylov in Kotlin Community
Просто гарантируется единственность объекта в рамках класслоадера
источник

AM

Andrew Mikhaylov in Kotlin Community
Я не проверял, может, в котлин-рефлекте есть метод получения инстанса object-а по его KClass-у -- если да, можете его взять вместо createInstance
источник

PE

Pavel Erokhin in Kotlin Community
Понял, учту совет @eld0727, спасибо за разъяснение @r4zzz4k 👍
источник

PE

Pavel Erokhin in Kotlin Community
Andrew Mikhaylov
Я не проверял, может, в котлин-рефлекте есть метод получения инстанса object-а по его KClass-у -- если да, можете его взять вместо createInstance
Посмотрю
источник

PE

Pavel Erokhin in Kotlin Community
Ну да, там есть companionObjectInstance, objectInstance
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Я не проверял, может, в котлин-рефлекте есть метод получения инстанса object-а по его KClass-у -- если да, можете его взять вместо createInstance
вроде был
источник

BP

Bogdan Panchenko in Kotlin Community
Pavel Erokhin
Ну да, там есть companionObjectInstance, objectInstance
objectInstance этот
источник

PE

Pavel Erokhin in Kotlin Community
Bogdan Panchenko
objectInstance этот
+
источник

AM

Andrew Mikhaylov in Kotlin Community
Pavel Erokhin
Ну да, там есть companionObjectInstance, objectInstance
О, ну вот прям с ним всё и делается :) В одну сторону он, в другую ::class, и у вас есть связка между объектом и классом.
источник
2020 March 28

А

Артём in Kotlin Community
Коллеги, доброе время суток! Можете помочь с решением одной проблемки, над которой уже вторые сутки не сплю..? =)
Есть интерфейс Block, и интерфейс Item
некоторые адаптер делегаты используют для отрисовки списков Block, некоторые Item
есть класс Loading: Block, Item
Задача: написать функцию/класс, которая могла бы создавать адаптер делегат с Loading либо для Block, либо для Item

Начальная точка размышлений была поставлена с этого метода:
fun <TYPE> loadingShowBlockDelegate(): AdapterDelegate<List<TYPE>>
       where TYPE : Block, TYPE : Item {
   return adapterDelegateLayoutContainer<Loading, TYPE>(
       layout = R.layout.item_loading_list_show
   ) {
   }
}

Но я получаю ошибку "Type argument is not within its bounds. Expected: TYPE, Found: Loading"
Я чувствую, что упускаю что-то важное.. Но никак не понять, что.
возможно, надо пойти через класс, а не через функцию. что то типо someClass<Block>.adapter(). Но в этом направлении у меня пока тоже ничего не получилось.
источник

BP

Bogdan Panchenko in Kotlin Community
Артём
Коллеги, доброе время суток! Можете помочь с решением одной проблемки, над которой уже вторые сутки не сплю..? =)
Есть интерфейс Block, и интерфейс Item
некоторые адаптер делегаты используют для отрисовки списков Block, некоторые Item
есть класс Loading: Block, Item
Задача: написать функцию/класс, которая могла бы создавать адаптер делегат с Loading либо для Block, либо для Item

Начальная точка размышлений была поставлена с этого метода:
fun <TYPE> loadingShowBlockDelegate(): AdapterDelegate<List<TYPE>>
       where TYPE : Block, TYPE : Item {
   return adapterDelegateLayoutContainer<Loading, TYPE>(
       layout = R.layout.item_loading_list_show
   ) {
   }
}

Но я получаю ошибку "Type argument is not within its bounds. Expected: TYPE, Found: Loading"
Я чувствую, что упускаю что-то важное.. Но никак не понять, что.
возможно, надо пойти через класс, а не через функцию. что то типо someClass<Block>.adapter(). Но в этом направлении у меня пока тоже ничего не получилось.
А вызов функции adapterDelegateLayoutContainer какие она принимает дженерик
источник