@kotlin_lang

Страница 562 из 982
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

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
Странно что этот код работает на ней (если он работает)
Ну потом где-нибудь ClassCastException вылезет.

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
https://pastebin.com/FkRTi1zq
private final Map<Class, FeatureController> controllers; - FeatureController имеет дженерик, какой он должен быть?

любого?

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() ?

Страница 562 из 982