Kodrill

Java SE 17 Gold (1Z0-826-JPN) 試験 / Java モジュール・システム ・ 無料問題 3/3

Java モジュール・システム 問題3[モジュールの宣言とモジュール間のアクセス]

モジュール com.shop.core と com.shop.app を次のように定義しました。com.shop.app の Main クラスをコンパイルした結果として正しいものを選んでください。

module-info.java
// com.shop.core/module-info.javamodule com.shop.core {    exports com.shop.core.api;}
module-info.java
// com.shop.app/module-info.javamodule com.shop.app {    requires com.shop.core;}
Main.java
// com.shop.app/com/shop/app/Main.javapackage com.shop.app;​import com.shop.core.api.Cart;import com.shop.core.internal.PriceTable;​public class Main {    public static void main(String[] args) {        System.out.println(new Cart().total(new PriceTable()));    }}

選択肢

  • A.Cart も PriceTable も public クラスなら、コンパイルに成功する
  • B.import com.shop.core.internal.PriceTable; の行でコンパイルエラーになる正解
  • C.import com.shop.core.api.Cart; の行でコンパイルエラーになる
  • D.コンパイルには成功するが、実行時に IllegalAccessError が発生する

解説

モジュールの外からアクセスできるのは、exports したパッケージの public な型だけです。com.shop.core は com.shop.core.api だけを exports しているので、com.shop.core.internal は PriceTable が public クラスでも com.shop.app からは見えず、import の行で「パッケージは表示不可」というコンパイルエラーになります。

「Java モジュール・システム」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。