同じ名前のクラスを2つのパッケージから import
このコードを実行するとどうなるか。
import java.util.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
List list = null;
System.out.println("ok");
}
}
- A
okと出力される - B 実行時に例外が発生する
- C コンパイルエラーになる
- D 何も出力されない
正解と解説を見る
正解: C
- A: List がどちらのパッケージの型か決まらないので、実行まで進みません。
- B: あいまいな名前はコンパイル時の誤りです。
- C: java.util と java.awt の両方に List があり、ワイルドカード同士ではどちらか決まらずコンパイルエラーです。
- D: コンパイルエラーなので実行されません。
ポイント
java.utilにもjava.awtにもListという名前の型があります。両方をワイルドカードで import してListと書くと、どちらか決まらずコンパイルエラーです。import java.util.List;のように1つを明示的に import すれば、そちらが優先されます。
「パッケージの使用 (パッケージ宣言とインポート)」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)