モジュールでinterfaceへのclass provide
app sideのmodule-info.javaでuse app.SampleInterfaceでinterface宣言
provide sideのmodule-info.javaでprovides app.SampleInterface with lib.SampleImplでprovide
app\module-info.java
module App {
exports app;
uses app.SampleInterface;
}
app\app.App.java
package app;
import java.util.Iterator;
import java.util.ServiceLoader;
/**
*
* @author java
*/
public class App {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Iterator<SampleInterface> i = ServiceLoader.load(SampleInterface.class).iterator();
while(i.hasNext()) {
SampleInterface s = i.next();
System.out.println(s.method());
}
}
}
app\app.SampleInterface.java
package app;
/**
*
* @author java
*/
public interface SampleInterface {
public String method();
}
lib\module-info.java
module Lib {
exports lib;
requires App;
provides app.SampleInterface with lib.SampleImpl;
}
lib\lib.SampleImpl.java
package lib;
import app.SampleInterface;
/**
*
* @author java
*/
public class SampleImpl implements SampleInterface{
@Override
public String method() {
return "i am SampleImpl";
}
}
実行結果
i am SampleImpl