как узнать реализацию метода Set.retainAll(), да и других методов тоже

подскажите прописана ли где-то реализация данного метода? не понимаю почему иногда в Intellij IDE в справочной системе, или как она называется, есть реализация каких-то методов, а иногда просто сигнатура. в java doc просто описания без конкретного кода. Иногда очень интересно узнать как реализован тот или иной метод


Ответы (1 шт):

Автор решения: dmtr

как узнать реализацию метода Set.retainAll()

retainAll() реализован в абстрактном классе AbstractCollection, и далее наследуется в AbstractSet, а HashSet в свою очередь наследует AbstractSet. Наследование позволяет не переопределяя метод родительского класса работать с ним как со своим.


почему иногда в Intellij IDE в справочной системе, или как она называется, есть реализация каких-то методов, а иногда просто сигнатура

Потому что вы когда вы видете только метод с сигнатурой - в частых случаях вы просто открываете интерфейс. Иногда можете попасться на нативный метод.

Чтобы увидеть реализацию, опять же, по вашему вопросу того же Set, то вам нужно провалиться не в интерфейс Set а в одну из его реализаций, например в HashSet.

Так вы провалитесь в реализацию методов Set в HashSet

HashSet<Object> set = new HashSet<>();
set.add(new Object());

А так в интерфейс Set

Set<Object> set = new HashSet<>();
set.add(new Object());

Или если вы попали в интерфейс, там IDE уже может подсказать где реализованы методы

введите сюда описание изображения

→ Ссылка