LoginSignup
0
0

More than 1 year has passed since last update.

moduleでのclass provide

Posted at

モジュールで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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0