Зачем использовать вспомогательный метод захвата карт?
Ссылаясь на :Методы захвата с использованием подстановочных знаков
В нем говорится, чтобы создать вспомогательный метод для захвата группового символа.
public void foo(List<?> i) {
fooHelper(i);
}
private <T> void fooHelper(List<T> l) {
l.set(0, l.get(0));
}
Простое использование этой функции, приведенной ниже, не приводит к ошибкам компиляции и, похоже, работает аналогично. Что я не понимаю: почему бы вам просто не использовать это и не использовать помощника?
public <T> void foo(List<T> l) {
l.set(0, l.get(0));
}
Я думал, что этот вопрос действительно сводится к следующему: в чем разница между подстановочными знаками и генериками? Итак, я пошел к этому:разница между подстановочными знаками и генериками, Он говорит, чтобы использовать параметры типа:
1) Если вы хотите навязать какое-то отношение к различным типам аргументов метода, вы не можете сделать это с помощью подстановочных знаков, вы должны использовать параметры типа.
Но разве это не то, что на самом деле делает подстановочный знак с вспомогательной функцией? Разве это не навязывает отношение к различным типам аргументов метода с его установкой и получением неизвестных значений?
Мой вопрос: если вам нужно определить что-то, что требует отношения по различным типам аргументов метода, то зачем сначала использовать подстановочные знаки, а затем использовать для этого вспомогательную функцию?
Это похоже на хакерский способ использовать подстановочные знаки.