Size: a a a

2020 August 17

WD

WhoLetThe DogsOut in pro.jvm
List<Handler<?,?>>
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
List<Handler<?,?>>
Ну если идти по такому пути, то тогда по идее нужно класть List<Handler<?>>. Где Handler<?> должен получатся после вызова Handler<?,?> с указанием одного параметра. А это не возможно.
источник

WD

WhoLetThe DogsOut in pro.jvm
Не уверен, что тебе это нужно. Сам писал, что есть заранее известные форма и провайдер. Вот и сделай метод, который по двум этим параметрам выдаёт обработчик.
источник

WD

WhoLetThe DogsOut in pro.jvm
Если нужны срезы - список провайдеров для формы или форм для провайдера и есть потребность их где-то хранить - List<Handler<V,?>> и List<Handler<?,P>> тебе в помощь.
источник

WD

WhoLetThe DogsOut in pro.jvm
Нужно ещё больше деталей - давай уже в личку.
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
Не уверен, что тебе это нужно. Сам писал, что есть заранее известные форма и провайдер. Вот и сделай метод, который по двум этим параметрам выдаёт обработчик.
Проблема в том, что первый параметр задается в одном месте (форму/view). А второй параметр выбирается уже после, когда приходят запросы и у нас есть провайдер который нужно выбрать (Provider)
источник

h

humanoid in pro.jvm
Последнее напишу тут
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
Нужно ещё больше деталей - давай уже в личку.
Я хочу, чтобы получилась типа мапа. Map<String, Handler>.

В одном месте создается мапа
Map map  = … <String, Handler>
map.put(“mainMenu”, new Select(“1”,”2”,”3”))
map.put(“question3”, new Question(“3?”))

В другом месте:
map.get(“mainMenu”).handle(new Vk())
источник

IG

Ilya Grudsky in pro.jvm
Не сможешь, забудь.  Только пробрасываение контекста
источник

h

humanoid in pro.jvm
Но у Select и Question нет ничего общего
источник

IG

Ilya Grudsky in pro.jvm
с контекста уже можешь выдирать нужный интерфейс с interface marker'a (вместо Object)
источник

WD

WhoLetThe DogsOut in pro.jvm
И ты хочешь, чтобы Handler был согласован с Vk? Да, это невозможно, сами мучаемся.
источник

IG

Ilya Grudsky in pro.jvm
map.get("typE).handle(context {something: Any} )
источник

IG

Ilya Grudsky in pro.jvm
По-другому никак, увы.
источник

h

humanoid in pro.jvm
Ilya Grudsky
По-другому никак, увы.
Понял, но это не типобезопасно получается. Нет тех гарантий которых бы хотел. Спасибо.
Спасибо всем)
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
И ты хочешь, чтобы Handler был согласован с Vk? Да, это невозможно, сами мучаемся.
Да, что то вроде такого. Ну вот на хаскеле я подобно реализовал. Видимо это возможно там потому что классы типов
источник

IG

Ilya Grudsky in pro.jvm
humanoid
Понял, но это не типобезопасно получается. Нет тех гарантий которых бы хотел. Спасибо.
Спасибо всем)
Всё там есть, просто гарантии в рантайме, увы. На уровне Handler будет метод getHandler(): T который будет с контекста выдирать всё и сразу падать, если тип не подошёл. Других вариантов нет.
источник

h

humanoid in pro.jvm
Ilya Grudsky
Всё там есть, просто гарантии в рантайме, увы. На уровне Handler будет метод getHandler(): T который будет с контекста выдирать всё и сразу падать, если тип не подошёл. Других вариантов нет.
Ну типа гарантии в инит-тайме?
источник

h

humanoid in pro.jvm
Так то да, сейчас у меня работает подобное с Object и методом, которые проверяет нужные соотвествия.
источник

IG

Ilya Grudsky in pro.jvm
handler: A -> ты ему можешь что удодно подсунуть (B,C,D,V), но как только он захочет получить "свой"  тип с другого (маркера) или чего угодно) — упадёт с ClassCastException. В любом случае в компайлтайме гарантии не будет.
источник