Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
public class ReportRenderer {
//...
public List<String> findMusic() {
final List<String> music = new ArrayList<String>();
for (final MusicFinder finder : ServiceLoader.load(MusicFinder.class)) {
music.addAll(finder.getMusic());
}
Collections.sort(music);
return music;
}
//...
}
public static void visitAllMusicFinders(Consumer<MusicFinder> consumer) {
synchronized (serviceLoader) {
for (final MusicFinder musicFinder : serviceLoader) {
consumer.accept(musicFinder);
}
}
}
Использование SPI механизма для создания расширений