Size: a a a

2020 August 17

WD

WhoLetThe DogsOut in pro.jvm
Модное решение - использовать рефлексию и аннотации.
источник

h

humanoid in pro.jvm
WhoLetThe DogsOut
Модное решение - использовать рефлексию и аннотации.
Ну рефлексию как бы везде и всегда можно заюзать. Последнее дело
источник

DC

Denis Chikanov in pro.jvm
WhoLetThe DogsOut
Нет, один интерфейс не сделаешь. Можно параметризовать, но реализовать Handler<A> и Handler<B> в одном классе не получится.
Разве?
источник

h

humanoid in pro.jvm
Я пытаюсь понять мб мою проблему можно нормально с типами решить
источник

WD

WhoLetThe DogsOut in pro.jvm
Тогда начни с описания своей проблемы.
источник

WD

WhoLetThe DogsOut in pro.jvm
Denis Chikanov
Разве?
Йес.
источник

AD

Apache DOG™ in pro.jvm
WhoLetThe DogsOut
Нет, один интерфейс не сделаешь. Можно параметризовать, но реализовать Handler<A> и Handler<B> в одном классе не получится.
Handler<AorB>
источник

h

humanoid in pro.jvm
Apache DOG™
Handler<AorB>
Это джава?)
источник

WD

WhoLetThe DogsOut in pro.jvm
О, ну давайте мы юнион типы будем имитировать. Их даже в Котлин не завезли ещё.
источник

AD

Apache DOG™ in pro.jvm
Ты не знаешь как написать AorB?
источник

AD

Apache DOG™ in pro.jvm
Вроде должен знан паттерн фасад/декоратор
источник

WD

WhoLetThe DogsOut in pro.jvm
humanoid
Это джава?)
Это джава, но делать так не стоит. Лучше православная рефлексия.
источник

AD

Apache DOG™ in pro.jvm
Чем она православная? Там много с ней проблем и сюрпризов
источник

h

humanoid in pro.jvm
Apache DOG™
Ты не знаешь как написать AorB?
Фасад + декоратор знаком, но про AorB не слышал
источник

h

humanoid in pro.jvm
Либа.
Есть формочки разных типов - типа Select / Question / Menu / Photo / Radio  и тд
Есть обработчики этих формочек для разных провайдеров типа обработчик для Telegram для Vk для Fb и тд.
Пользователь либы создает много инстансов этих формочек. Потом либа должна в зависиомсти от того, с какого провайдера пришло сообщение и какая формочка сейчас (стейт машина) - взять нужны обработчик.

Те например сейчас пришло сообщение из Vk. В стейт машине сейчас форма “MainMenu” c типом Menu.  Соотвественно мы должны найти обработчик для формы типа Menu и провайдера Vk. Далее передаем в этот обработчик саму форму типа Menu и условную стрингу, которая нам пришла из vk.
источник

h

humanoid in pro.jvm
Простите за хаскель. Но вот я получил такое поведение на нем для примера.

data Select = Select [String]
data Question = Question String

data VK = VK
data Facebook = Facebook

class ChatFlowForm form provider where
 handle :: form -> provider -> String
instance ChatFlowForm Select VK where
 handle (Select _) VK = "select vk"
instance ChatFlowForm Select Facebook where
 handle (Select _) Facebook = "select facebook"
instance ChatFlowForm Question VK where
 handle (Question _) VK = "question vk"


l :: (ChatFlowForm Select a, ChatFlowForm Question a) => [a  -> String]
l = [handle (Question "???"), handle (Select ["1", "2"])]

run provider = (l !! 0) provider  ++ (l !! 1) provider
источник

AD

Apache DOG™ in pro.jvm
humanoid
Фасад + декоратор знаком, но про AorB не слышал
Вот и можно сделать обёртку которая будет наследовать общий интерфейс
источник

DC

Denis Chikanov in pro.jvm
Я может тупой, но я только что радостно скомпилировал интерфейс с двумя методами, перегруженными по типу аргумента. Что не так?
источник

h

humanoid in pro.jvm
Denis Chikanov
Я может тупой, но я только что радостно скомпилировал интерфейс с двумя методами, перегруженными по типу аргумента. Что не так?
Код в студию пожалуйста
источник

AD

Apache DOG™ in pro.jvm
Рефлексия может делать инстанс класса начхав на все констреинты
источник