Единственная разница в том, представляет ли T
параметр типа List
, Comparator
или что-то среднее.
Что касается вызывающего абонента, три сигнатуры метода эквивалентны, т. Е. Всякий раз, когда может использоваться один из них, могут использоваться и другие.
Для реализации метода, вероятно, наиболее удобен foo
, поскольку он позволяет изменять список без необходимости дополнительного преобразования захвата, что потребовало бы делегирования вспомогательному методу.