Прежде всего:
Я не уверен, было ли это уже известно, но ради полноты я подумал, что упомяну это.
Важной частью, на которую следует обратить внимание, является то, что API предшествует универсальному (и, что более важно,) автобоксированию (API коллекций был введен в Java 1.2, а автобокс - в Java 5).
Поэтому, когда они впервые разработали API, не было никакого способа перепутать их. Даже если ваши List
содержали Integer
объектов, все просто: если вы вызываете метод с примитивным типом аргумента (int
), то это индекс, если вы передаете Object
(даже если это * 1030) *), затем вы передаете объект для удаления.
Конечно, это все еще не самая лучшая идея (но довольно много API Java ... не идеальны), но вероятность путаницы была намного ниже.
Повышенная вероятность путаницы существует только потому, что барьер int
/ Integer
стал менее видимым благодаря автоматическому боксу и автоматической распаковке.
Sidenote: важной «особенностью» API коллекций являются «короткие имена для часто используемых методов». Предыдущее «решение» Vector
/ Enumeration
имело общеизвестно длинные имена для довольно распространенных операций:
Vector.elementAt()
против List.get()
Vector.addElement()
против Collection.add()
Enumeration.hasMoreElements()
/ nextElement()
против Iterator.hasNext()
/ next()
Vector.removeElement()
против Collection.remove()
Vector.removeElementAt()
против List.remove(int)
И последний, куда они, вероятно, пошли немного слишком далеко.