
Victor
26.02.2018
19:36:09
не хочется впиливать жабовский класс ради этого

Quantum Harmonizer
26.02.2018
19:36:25

Руслан
26.02.2018
19:37:03
так если не хочется конкретного типа, то видимо Feature<*>

Artem
26.02.2018
19:37:06
@victorpomidor https://proandroiddev.com/understanding-generics-and-variance-in-kotlin-714c14564c47
Вот хорошая статья, чтобы понять всякие out/in котлиновские

Google

Руслан
26.02.2018
19:37:14

Victor
26.02.2018
19:38:06

Руслан
26.02.2018
19:38:26
а что пишет

Victor
26.02.2018
19:39:06
Error:(19, 19) Kotlin: Out-projected type 'FeatureController<out Feature>?' prohibits the use of названиеметода

Quantum Harmonizer
26.02.2018
19:39:08
аналогично, не взлетает
http://lurkmore.to/%D0%9A%D0%BE%D0%BD%D0%B5%D1%86_%D0%BD%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D0%BA%D0%B0%D0%B7%D1%83%D0%B5%D0%BC

Руслан
26.02.2018
19:39:45

Quantum Harmonizer
26.02.2018
19:40:10
первый параметр write наверняка generic, т. е. он стоит в in-позиции

Victor
26.02.2018
19:40:36

Quantum Harmonizer
26.02.2018
19:41:47
ну вот, гипотетический SubCustomer можно записать в FeatureController<in Customer>, но никак не out

Victor
26.02.2018
19:42:57
а out Feature можно?
у меня Customer : Feature

Quantum Harmonizer
26.02.2018
19:43:29
in Feature, почитай про variance всё-таки

Google

Victor
26.02.2018
19:46:37
либо я не понимаю, в каком месте ты имеешь ввиду in
но так
val invalid: FeatureController<in Feature> = customerFeatureController
точно не взлетит

Руслан
26.02.2018
19:47:09
Да даже не в этом дело

Victor
26.02.2018
19:47:09
in этож суперклассы, нет? Чем оно мне тут поможет
да вот и я о том

Руслан
26.02.2018
19:47:51
Ты берешь метод специфичный для Customer, который может вызывать код специфичный для Customer, и пытаешься туда засунуть Feature

Victor
26.02.2018
19:48:19
ну да, ибо у меня этих подклассов Feature море
и надо иметь их коллекцию

Руслан
26.02.2018
19:49:08
Тогда только in, out значит что ты можешь засунуть туда и Customer и Seller. И они оба Feature
А ты должен засовывать только Feature
Даже не так
В общем если на пальцах: если у тебя метод принимает Customer, а не Feature - то все, нельзя

Victor
26.02.2018
19:50:53
жопа. Странно что на жабе можно

Руслан
26.02.2018
19:51:04
Джава тебе разрешает - потому что ты уходишь в Raw типы
Скатываешься до Java 1.4 по сути
Странно что этот код работает на ней (если он работает)

Quantum Harmonizer
26.02.2018
19:52:30

Victor
26.02.2018
19:52:49
да нет, почему
работает
но надо проверять типы конечно

Google

Victor
26.02.2018
19:53:25
да хотя не обязательно
? extends хуемоё у нас работает

Руслан
26.02.2018
19:56:19
Т.е. ты хочешь сказать что этот код переписанный на джаву не будет кидать какой-нибудь RuntimeException?
Ты можешь разве что дергать общие методы

Victor
26.02.2018
20:02:45
че?) Ща, переписываю на жабу уже свой код

Руслан
26.02.2018
20:03:49
Ну вроде из примеров должно быть понятно что то что ты пытаешься делать - не будет работать ни на одном языке)
Но я думаю это будет хорошим упраженением попериписывать контроллеры)

Kira
26.02.2018
20:05:02
И на хаскель тоже перепишите

Руслан
26.02.2018
20:09:31
Внезапно если умудриться как-то так написать на хаскеле оно тоже вероятно не скомпилится
(ну всмысле я даю гарантию что не скомпилится)

Kira
26.02.2018
20:11:06
Плюс хорошего языка - фигня не компилится..

Victor
26.02.2018
20:15:55
упоролся что-то
write*

Руслан
26.02.2018
20:16:56
ну если во write будет Feature, то проблем не должно быть
пишешь FeautreController<*> и все работает

Victor
26.02.2018
20:44:48
то ли отдохнуть надо, то ли сменить профессию )

Google

Bogdan
26.02.2018
20:47:08
скопируй данный код в котлин файл

guga
26.02.2018
20:47:46
И нажми конверт ту котлин

Victor
26.02.2018
20:48:10
Kotlin: Out-projected type 'FeatureController<out Feature>?' prohibits the use of названиеметода

Pavel
26.02.2018
20:48:44
Багу брейнсам заведи

Bogdan
26.02.2018
20:49:15
это бы в текстовом виде

Victor
26.02.2018
20:51:23
ок, ща кину
как б так шоп компактнее
https://pastebin.com/FkRTi1zq
вроде всё нужное закинул
Багу брейнсам заведи
да я пока склоняюсь, что я либо не вкуриваю, как в котлине это сделать, либо в котлине это спецом выпилили

Bogdan
26.02.2018
21:05:01
любого?

Victor
26.02.2018
21:05:38
я вроде скинул
interface FeatureController<T> where T : Feature {
там спецом закинул необходимую иерархию и интерфейс, в пасте

Bogdan
26.02.2018
21:07:21
where T хачем это?
и Extras
просто хешь мап?

Google

Victor
26.02.2018
21:12:06
а, да
хешмап
where T - потому что T должен быть подклассом Feature

Bogdan
26.02.2018
21:14:08
Feature - должен быть классом, а FeatureController - интерфейсом?

Victor
26.02.2018
21:14:46
да

Bogdan
26.02.2018
21:19:42
ну с рефлекцией можно вроде
хотя не он просто ворнинг
но это очень плохо
и не факт что в райнтайме не будет валится

Victor
26.02.2018
21:26:15
ух едрить ты упоролся ))
в плане, жестко конечно
да хз, видимо на жабе оставлю, потом просто надо вкурить, действительно ли в котлине спецом такое выпилили
спасибо вообщем

Kira
26.02.2018
21:28:02
Что за Function.identity() ?