LINUX.ORG.RU

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

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

Как решишь инжектить так и будешь инжектить, не понял вопроса.

Как инжектить реализацию нескольких интерфейсов? В Java ты не можешь объявить тип поля класса несколькими интерфейсами одновременно. Ты можешь создать свой интерфейс, который наследует от нескольких, но реализации этих нескольких интерфейсов не будут реализовывать твой новый интерфейс, по крайней мере если автор этих реализаций не ты. Ну и как тут быть без утиной типизации?

Чисто для иллюстрации. В Java есть интерфейсы List<T> и Deque<T>. Класс LinkedList<T> реализует оба эти интерфейса и если тебя всегда устраивает эта реализация, ты можешь сделать coupling на неё. Но допустим тебе принесли стороннюю библиотеку с другой реализацией интерфейсов List<T> и Deque<T> в одном классе. Как его инжектить в твой код, то есть как всё таки сделать decoupling? Иными словами как использовать dependency injection с такими классами, сразу реализующими несколько интерфейсов которые тебе нужны одновременно?

Утиная типизация решает эту проблему не напрягаясь.

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

Как решишь инжектить так и будешь инжектить, не понял вопроса.

Как инжектить реализацию нескольких интерфейсов? В Java ты не можешь объявить тип поля класса несколькими интерфейсами одновременно. Ты можешь создать свой интерфейс, который наследует от нескольких, но реализации этих нескольких интерфейсов не будут реализовывать твой новый интерфейс, по крайней мере если автор этих реализаций не ты. Ну и как тут быть без утиной типизации?

Чисто для иллюстрации. В Java есть интерфейсы List<T> и Deque<T>. Класс LinkedList<T> реализует оба эти интерфейса и если тебя всегда устраивает эта реализация, ты можешь сделать coupling на неё. Но допустим тебе принесли стороннюю библиотеку с другой реализацией интерфейсов List<T> и Deque<T> в одном классе. Как его инжектить в твой код, то есть как всё таким сделать decoupling? Иными словами как использовать dependency injection с такими классами, сразу реализующими несколько интерфейсов которые тебе нужны одновременно?

Утиная типизация решает эту проблему не напрягаясь.