Size: a a a

Kotlin Community

2020 June 06

NT

Nurseyit Tursunkulov in Kotlin Community
источник

I

In7 in Kotlin Community
Ivan
на бэке примерно так, но мне в андроиде удобнее иметь четыре разны типа вместо енума в одном
А можно какой-то кейс, где копипаста удобнее enum?
источник

AY

Andy Yanechko in Kotlin Community
Всем привет, такой вопрос, есть вот такой класс:
abstract class BaseArguments(private val bundle: Bundle) {

   abstract fun toBundle(): Bundle

}

Нужно создать наследника BaseArguments, только не понятно как вызвать у него конструкор, это возможно?
источник

IO

Iaroslav Orlov in Kotlin Community
Andy Yanechko
Всем привет, такой вопрос, есть вот такой класс:
abstract class BaseArguments(private val bundle: Bundle) {

   abstract fun toBundle(): Bundle

}

Нужно создать наследника BaseArguments, только не понятно как вызвать у него конструкор, это возможно?
конечно, можно, если вам известны параметры конструктора
источник

AY

Andy Yanechko in Kotlin Community
Iaroslav Orlov
конечно, можно, если вам известны параметры конструктора
известны, он наследуется от абстрактного класса с конструктором
источник

IO

Iaroslav Orlov in Kotlin Community
1. T::class.createInstance
2. T::class.primaryConstructor.call(...) as T
источник

AY

Andy Yanechko in Kotlin Community
Iaroslav Orlov
1. T::class.createInstance
2. T::class.primaryConstructor.call(...) as T
Спасибо, нужно было ещё kotlin-reflect добавить, что-то не подумал об этом
источник

AM

Andrew Mikhaylov in Kotlin Community
Andy Yanechko
известны, он наследуется от абстрактного класса с конструктором
Справедливости ради, у наследника могут быть совершенно другие параметры конструктора, нежели у абстрактного класса, от которого он наследуется. Если вы сами ограничиваете этот контракт -- эт другое дело :)
источник

AY

Andy Yanechko in Kotlin Community
Andrew Mikhaylov
Справедливости ради, у наследника могут быть совершенно другие параметры конструктора, нежели у абстрактного класса, от которого он наследуется. Если вы сами ограничиваете этот контракт -- эт другое дело :)
То есть если помимо конструктора абстрактного класса у T есть ещё какой-то другой конструктор, то такой подход не сработает?

P.S. я разобрался, если есть primaryConstructor то сработает, если нужно ещё один конструктор, то нужно добавлять его как secondary и из него вызывать primaryConstructor. Спасибо
источник

AN

Alexander Nozik in Kotlin Community
Andy Yanechko
То есть если помимо конструктора абстрактного класса у T есть ещё какой-то другой конструктор, то такой подход не сработает?

P.S. я разобрался, если есть primaryConstructor то сработает, если нужно ещё один конструктор, то нужно добавлять его как secondary и из него вызывать primaryConstructor. Спасибо
Сработает. Конструкторы можно резолвить по типам параметров
источник

AM

Andrew Mikhaylov in Kotlin Community
Andy Yanechko
То есть если помимо конструктора абстрактного класса у T есть ещё какой-то другой конструктор, то такой подход не сработает?

P.S. я разобрался, если есть primaryConstructor то сработает, если нужно ещё один конструктор, то нужно добавлять его как secondary и из него вызывать primaryConstructor. Спасибо
Я о том, что если у вас есть
abstract class A(val i: Int)
, то наследник может быть определён как
class B(val s: String, i: Int) : A(i)
источник

AM

Andrew Mikhaylov in Kotlin Community
Andy Yanechko
То есть если помимо конструктора абстрактного класса у T есть ещё какой-то другой конструктор, то такой подход не сработает?

P.S. я разобрался, если есть primaryConstructor то сработает, если нужно ещё один конструктор, то нужно добавлять его как secondary и из него вызывать primaryConstructor. Спасибо
Поэтому работать будет, только если вы явно оговорите, что наследники этого класса должны иметь конструктор с такой-то сигнатурой.
источник

AY

Andy Yanechko in Kotlin Community
Andrew Mikhaylov
Поэтому работать будет, только если вы явно оговорите, что наследники этого класса должны иметь конструктор с такой-то сигнатурой.
Понятно, спасибо
источник

AM

Andrew Mikhaylov in Kotlin Community
Andy Yanechko
Понятно, спасибо
Ну и посмотрите, возможно, вам не нужен kotlin-reflect, достаточно взять T::class.java.newInstance(...) (или как там это делается) и не тащить на борту лишнюю зависимость :)
источник

I

Ivan in Kotlin Community
In7
А можно какой-то кейс, где копипаста удобнее enum?
я не писал, что копипаста удобнее. я писал, что именно 4 разных объекта удобнее лично для меня.

у меня UI с 4-мя разными настройками, но внешне они выглядят одинаково: свитчер и список. вот я и хотел иметь четыре разных класса с одинаковыми структурами для этих 4-ёх разных UI-элементов.
источник

AL

Alexander Levin in Kotlin Community
Из того, что по тематике канала - https://talkingkotlin.com/

Не по теме канала не знаю особо, можно в @pofftop спросить, вроде там кто-то в них участвует :)
источник

AN

Alexander Nozik in Kotlin Community
Alexander Levin
Из того, что по тематике канала - https://talkingkotlin.com/

Не по теме канала не знаю особо, можно в @pofftop спросить, вроде там кто-то в них участвует :)
Это на что ответ был?
источник

D

Denys in Kotlin Community
Alexander Nozik
Это на что ответ был?
Про подкасты спрашивали
источник

AN

Alexander Nozik in Kotlin Community
А, я чего-то не увидел. По андроиду можно пойти смотреть @neuradev
источник

АГ

Алексей Гладков... in Kotlin Community
Alexander Nozik
А, я чего-то не увидел. По андроиду можно пойти смотреть @neuradev
Спасибо ))
источник