Для всех методов в Коллекциях , которые принимают List в качестве первого аргумента, почему эти методы не являются просто частью интерфейса List?
Моя интуиция такова: учитывая объект List, сам этот объект должен «знать», как выполнять над собой такие операции, как rotate (), shuffle () или reverse (). Но вместо этого, как программист на Java, я должен рассмотреть оба метода в интерфейсе List, а также статические методы "там" в классе Collections, чтобы убедиться, что я использую каноническое решение.
Почему некоторые методы были помещены как статические автономные методы в класс Collections, а не добавлены в интерфейс List (и предположительно, таким образом, реализованы некоторым существующим или потенциальным базовым классом)?
Я пытаюсь лучше понять проектные решения, лежащие в основе инфраструктуры коллекций Java.
Есть ли здесь какой-то убедительный принцип проектирования ОО, который я пропускаю? Или это различие было сделано просто по какой-то практической причине производительности?