Я бы сказал, что это плохой способ получить расширения из точки расширения, в любом случае. Если они просто хотят использовать систему плагинов для загрузки определенного расширения, которое они создали, они могут вместо этого использовать метод getConfigurationElementsFor(String namespace, String extensionPointName, String extensionId)
и закрыть для других возможность использовать точку расширения. На данный момент нет точного способа узнать, какое расширение они получат. Скорее всего, позже в коде есть экземпляры, которые предполагают, что они получат свое расширение, а когда они не получат ожидаемого расширения, Mr ClassCastException постучится в дверь. (Однажды была такая ошибка в системе)
Конечно, лучший способ - изменить код для обработки многих расширений!
Но на ваш вопрос; Я не знаю, как ExtensionRegistry заполняет массив, API не говорит. Возможно, есть способ установить конкретную версию вашего расширения, которая позволит ему быть первой в массиве. Вам нужно будет заглянуть в код ExtensionRegistry, чтобы точно знать, как найдены расширения. Я думаю, что это может быть в алфавитном порядке, но я не уверен.
Другой способ - перегрузить существующий плагин своим плагином и заменить функциональность. Очень грязный подход, но в некоторых случаях это выполнимо. См. Один из моих вопросов относительно этого