明示的な import とワイルドカード
import java.util.*; と import java.awt.List; の両方を書いたとき、ソースコードの List はどれを指すか。
- A
java.awt.List - B
java.util.List - C どちらか決まらないのでコンパイルエラー
- D 実行時に決まる
正解と解説を見る
正解: A
- A: クラス名を明示した import は、ワイルドカードの import より優先されます。
- B: java.util.* はワイルドカードなので、明示した java.awt.List の方が優先されます。
- C: 片方が明示的な import なので、あいまいにはならずコンパイルできます。
- D: どのクラスを使うかはコンパイル時に決まります。
ポイント
- クラス名を明示した import (単一型インポート) は、ワイルドカードより優先されます。
- 同じ単純名のクラスを2つ明示的に import するとコンパイルエラーです。
「パッケージの使用 (パッケージ宣言とインポート)」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)