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