У меня есть интерфейс и реализация, которая предоставляется через модуль.Это сработало так, но по какой-то причине больше не работает.Когда я смотрю, как использовать SPI, это то, что появляется, но по какой-то необъяснимой причине это не работает.
Интерфейс
public interface VisualProvider {
void init ();
void destroy ();
}
Реализация
public final class OpenGLVisualProvider implements VisualProvider {
@Override public void init () {
System.out.println ( "test" );
}
@Override public void destroy () { Loader.destroy (); }
}
module-info.java
import io.switchware.kobalt.core.VisualProvider;
import io.switchware.kobalt.opengl.OpenGLVisualProvider;
module kobalt.visual.opengl {
provides VisualProvider with OpenGLVisualProvider;
}
private static final ServiceLoader < VisualProvider > VISUAL_PROVIDERS = ServiceLoader.load ( VisualProvider.class );
public static Iterator < VisualProvider > visualProviders ( boolean refresh ) {
if ( refresh ) VISUAL_PROVIDERS.reload ();
return VISUAL_PROVIDERS.iterator ();
}
Когда я звоню visualProviders ( true ).forEachRemaining ( VisualProvider::init );
, ничего не происходит, но должно вывести test в консоли