LINUX.ORG.RU

История изменений

Исправление hummer, (текущая версия) :

Вы даже на простой вопрос ответить не можете?

Могу, но зачем? Вопрос глупый и буквально в следующем предложении вы и сами догадались что я имел в виду. Наверное санитары подсказали.

Почему вы не можете в Java сделать обертку над чужим классом, которая будет реализовывать нужный вам интерфейс и делегировать вызовы в объект чужого типа?

Могу даже ещё проще, чем в вашем кривом примере с неверным определением ForeignClass. Обёртка получает экземпляр ForeignClass как Object в конструкторе. Конструктор проверяет реализует ли полученный объект оба интерфейса A и B. Далее конструктор кастит и сохраняет референс на полученный объект в соответствующих полях типов A и B. Затем соответствующие методы этих интерфейсов в самой обёртке дёргают те же самы методы этих двух полей. Вот только это костыль, который нарушает кучу всего и вообще неудобен и небезопасен. А в Go никаких обёрток и приведений типов городить не надо.

Вы с dependency injection в Spring никогда не работали?

Исходная версия hummer, :

Вы даже на простой вопрос ответить не можете?

Могу, но зачем? Вопрос глупый и буквально в следующем предложении вы и сами догадались что я имел в виду. Наверное санитары подсказали.

Почему вы не можете в Java сделать обертку над чужим классом, которая будет реализовывать нужный вам интерфейс и делегировать вызовы в объект чужого типа?

Могу даже ещё проще, чем в вашем кривом примере с неверным определениеи ForeignClass. Обёртка получает экземпляр ForeignClass как Object в конструкторе. Конструктор проверяет реализует ли полученный объект оба интерфейса A и B. Далее конструктор кастит и сохраняет референс на полученный объект в соответствующих полях типов A и B. Затем соответствующие методы этих интерфейсов в самой обёртке дёргают те же самы методы этих двух полей. Вот только это костыль, который нарушает кучу всего и вообще неудобен и небезопасен. А в Go никаких обёрток и приведений типов городить не надо.

Вы с dependency injection в Spring никогда не работали?