Получите один и тот же экземпляр класса поставщика услуг, который предоставляет более одного сервиса с ServiceLoader - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть проблема, и я не знаю, как ее решить

Допустим, у меня есть два интерфейса поставщика услуг (SPI)

public interface View{
    display();
}

public interface Logger{
    log(String s);
}

И поставщик услуг, который предоставляетобе службы, т.е.

public class LogView implements View, Logger{
    ...
}

Проблема заключается в том, что когда я пытаюсь получить экземпляр службы журнала через ServiceLoader.load(Logger.class), он отличается от экземпляра, созданного с помощью ServiceLoader.load(View.class).Есть ли способ сделать это так, чтобы я мог получить один и тот же экземпляр объекта из обоих вызовов?

Идея состоит в том, что после загрузки представления в качестве графического интерфейса пользователя, я хочу иметь возможность войти в тот же экземпляриз графического интерфейса и не другой.В настоящее время я застрял с двумя отдельными экземплярами, поэтому журнал действительно появляется.

...