
Kamo
14.11.2017
09:21:17
Привет, коллеги. Помогите решить вопрос с generic-ами, пожалуйста.
Имеется абстрактный класс BaseObj и абстрактная вьюха, котора хранит в себе этот объект - BaseView.
BaseView - generic класс, т.е. в Java объявлена как
BaseView<T extends BaseObj>.
Далее имеется фабрика, которая берет на вход дочерние объекты (наследников BaseObj) и возвращает нужную вьюху - наследника BaseView.
Вот метод на kotlin:
fun <T : BaseObj> getViewForObj(obj: T): BaseView<T>? {
return when (obj.getType()) {
TYPE1 -> View1(obj)
TYPE2 -> View2(obj)
TYPE2 -> View3(obj)
else -> null
}
}
Но так не работает, ругается, что несоответствуют типы возвращаемых значений, то есть он не может скастить View1 к BaseView<T> при том, что
View1 extends BaseView<Obj1>.
Как правильно решить эту проблему?

Sergey
14.11.2017
09:27:32
out попробуй проставить

Kamo
14.11.2017
09:27:51
куда?
fun <T : OrderDetail> getViewForOrderDetail(context : Context, orderDetail: T): BaseOrderDetailView<out T>? {
вот так не работает

Google

Sergey
14.11.2017
09:46:59
fun <T : BaseObj> getViewForObj(obj: T): BaseView<Any>?
вот так попробуй

Kamo
14.11.2017
10:04:20
Через * вроде заработало
Да, работает. Спасибо!

Illia
16.11.2017
12:47:26
У кого-то есть ссылки на руководство как попробовать kotlin js ?

Михаил
16.11.2017
13:39:47
https://blog.jetbrains.com/kotlin/2017/11/kotlinnative-v0-4-released-objective-c-interop-webassembly-and-more/

RadioButton
16.11.2017
20:45:19
Так что учить то блин? Java8,9 или Котлин?

Миша
16.11.2017
20:46:12
Учи php и забей

Ростислав
16.11.2017
20:47:25
Так что учить то блин? Java8,9 или Котлин?
Я не в курсе разговора, но учить и то, и другое. Java 8\9 примерно одинакова (точнее на 99% :)).
Прикол здесь в следующем: как по мне, Kotlin куда более перспективен и постепенно будут переходить на него. Развиваться будет именно он, а не Java. Но на Java уже написана громадная кодовая база, которую нужно использовать в работе и, чтобы ее использовать, нужно знать Java.

RadioButton
16.11.2017
20:48:45
тоже думаю вот 8,9 и Котлин учить)

Ростислав
16.11.2017
20:50:10

Google

RadioButton
16.11.2017
20:51:48
все, решил. обновил студию до 3.0 и начинаю "котлинить"
ещё б линукс поставить (:

Ростислав
16.11.2017
20:53:17

RadioButton
16.11.2017
20:53:44
д всм я знаю java7..

Ростислав
16.11.2017
20:54:13

Quantum Harmonizer
16.11.2017
21:43:58

Ростислав
16.11.2017
21:44:51

Oleg
16.11.2017
21:45:52
лучше ставить самый популярный дистрибутив - поддержка лучше

Ростислав
16.11.2017
21:48:35

Quantum Harmonizer
16.11.2017
21:51:35

Ростислав
16.11.2017
21:51:55