Empty() vs isEmpty() в классе Java Stack

Почему Stack в Java имеет метод empty() вместе с обычным isEmpty()? Все абстрактные классы, которые Stack extends имеют метод isEmpty().

Ответы

Ответ 1

Я полагаю, что вопрос ОП заключается в следующем: почему существуют дублированные методы, учитывая, что empty() и isEmpty() делают одно и то же?

Если вы посмотрите поближе, в Vector, Stack и HashTable, есть больше примеров методов, выполняющих похожие вещи с разными именами.

Вот краткая история:

На момент выпуска JDK 1.0 в Java не было фреймворка "Коллекция". Stack, Vector, HashTable были одними из основных структур данных, предоставляемых Java.

Позднее, в JDK 1.2, в JDK была добавлена платформа Collection, и были представлены стандартные интерфейсы (такие как List, Map).

Однако в этих новых стандартных интерфейсах коллекции методы были названы в другом соглашении. Изменение соглашения об именах, скорее всего, зависело от стандарта Java Bean, введенного также в JDK 1.2. Эти имена методов отличались от названий в старых классах Stack, Vector и HashTable. Например, он был назван empty() в исходном классе, но получил имя isEmpty() интерфейса Collection.

Чтобы сделать Stack, Vector и HashTable совместимыми с платформой Collection, Stack, Vector и HashTable реализовали соответствующие интерфейсы Collection. В то же время старые методы были сохранены ради обратной совместимости.

Отсюда и "дублированные" методы, которые вы видите сейчас.