Я пытаюсь понять использование подстановочных знаков с нижней границей в некоторой глубине. Я пытаюсь написать общий метод copy
, который копирует содержимое одного List
в другое. Я придумал эту подпись метода:
<T> void copy(List<T> dest, List<? extends T> src)
Я думаю, что эта подпись является всеобъемлющей для решения всех сценариев. Однако я вижу, что в классе Java Collections подпись метода выглядит так:
<T> void copy(List<? super T> dest, List<? extends T> src)
Я не понимаю, почему они используют List<? super T> dest
вместо просто List<T> dest
. Есть ли дополнительная гибкость с их подписью?