Возможно ли иметь коллекцию всех объектов, которые реализуют интерфейс?
Теоретически да.
В действительности, это будет работать, только если всеэто создает экземпляр объекта и добавляет его в список.И это, вероятно, делает это непрактичным ... если вы не измените способ создания объектов.
Один подход использует фабрики, но ничто не мешает некоторому коду, создающему экземпляр, не используя ваштщательно реализованная фабрика.
Другой подход заключается в замене интерфейса на абстрактный базовый класс, конструктор (-ы) которого гарантируют, что каждый новый экземпляр будет добавлен в список.Это не может быть подорвано с помощью обычного кода.Однако, если вы используете сериализацию Java-объектов (или аналогичную), вам нужно будет поместить «крючок» в базовый класс, чтобы убедиться, что десериализованные объекты добавлены в список.
Обратите внимание, что коллекция, которая содержит все экземпляры некоторого интерфейса или класса, потенциально является большой утечкой памяти.Вы, вероятно, должны будете что-то с этим сделать;например, используя слабые ссылки.