演習課題「provides with と uses を試してみよう」
現在、/home/ubuntu/java-module/source/jp.paiza.testb/jp/paiza/testb/practice/PRAC.java
に記述されているprac
メソッドを/home/ubuntu/java-module/source/jp.co.paiza.testa/jp/co/paiza/testa/Testa.java
から使用しようとしています。
① /home/ubuntu/java-module/source/jp.paiza.testb/module-info.java
において、provides with を用いて、jp.paiza.testb.practice.PRAC
というサービスと、それに対するサービス・プロバイダであるjp.paiza.testb.practice.Practicea
を指定してください
② /home/ubuntu/java-module/source/jp.co.paiza.testa/module-info.java
において、サービスであるjp.paiza.testb.practice.PRAC
を利用する処理を記述してください
③ Testa.java
において、ServiceLoader
クラスのload
メソッドを使用してPRAC
インターフェースの実装クラスをロードする処理を記述してください
④ ③に同じくTesta.java
において、拡張forループ により、PRAC
インターフェースのprac
メソッドを利用する処理を記述してください
①〜④までを行い、コンパイルをした後で正しく実行できれば成功です。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.testb -p classes source/jp.paiza.testb/module-info.java source/jp.paiza.testb/jp/paiza/testb/*/*.java
$ javac -d classes/jp.co.paiza.testa -p classes source/jp.co.paiza.testa/module-info.java source/jp.co.paiza.testa/jp/co/paiza/*/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.co.paiza.testa/jp.co.paiza.testa.Testa
期待する出力値
Testa
Practicea
演習課題「実装クラスを切り替えてみよう」
用意されているディレクトリをコンパイルした後で、/home/ubuntu/java-module/source/jp.paiza.testb/module-info.java
において、実装クラスをPracticeb
クラスに変更してください。その後、コンパイルをした後で、正しく実行できれば成功です。
なお、コンパイルコマンドについて理解できていれば、以下のコンパイルコマンドをコピーして利用してください。
$ javac -d classes/jp.paiza.testb -p classes source/jp.paiza.testb/module-info.java source/jp.paiza.testb/jp/paiza/testb/*/*.java
$ javac -d classes/jp.co.paiza.testa -p classes source/jp.co.paiza.testa/module-info.java source/jp.co.paiza.testa/jp/co/paiza/*/*.java
また、実行コマンドについて理解できていれば、以下の実行コマンドをコピーして利用してください。
$ java -p classes --module jp.co.paiza.testa/jp.co.paiza.testa.Testa
期待する出力値
Testa
Practiceb
#06:provides with と uses
このチャプターでは、モジュール・ディレクティブのprovides with, usesについて学習します。
・jp.co.paiza.a(モジュールを含めた形)javac -d classes/jp.co.paiza.a -p classes source/jp.co.paiza.a/module-info.java source/jp.co.paiza.a/jp/co/paiza/*/*.java
・jp.paiza.b(モジュールを含めた形)javac -d classes/jp.paiza.b -p classes source/jp.paiza.b/module-info.java source/jp.paiza.b/jp/paiza/b/*/*.java
・jp.co.paiza.ajava -p classes --module jp.co.paiza.a/jp.co.paiza.a.A