Модульная система Java: предоставляет универсальный интерфейс - PullRequest
4 голосов
/ 17 июня 2019

Я экспериментирую с модульной системой Java.Я пытаюсь использовать ServiceLoader для универсальных интерфейсов.Это работает, но у меня есть предупреждения в информации модуля.Вот мой минимальный код

module testProvideWith {
  provides ServiceGeneric with SString;
  uses ServiceGeneric;
}
public interface ServiceGeneric<T> {
  T getT();
}
public class SString implements ServiceGeneric<String>{
  public String getT() {return "Hello";}
}

Меня не удивляет предупреждение при попытке

ServiceGeneric<String> serv=ServiceLoader.load(ServiceGeneric.class).findFirst().get();

Я знаю об общем стирании, я понимаю, что мне придется использовать аннотацииили какой-то другой трюк, чтобы аннотировать правильный сервис.Но ... нет никаких упоминаний об общих услугах, которые я могу найти.Я ожидал, что смогу написать что-то вроде

module testProvideWith {
  provides ServiceGeneric<String> with SString;
  uses ServiceGeneric<String>;
  //more cases could be added
}
...
ServiceLoader.load(ServiceGeneric.class,String.class)

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

...