AI作成・独立検証済(有資格者監修なし)1Z0-815 対応
import(完全修飾名によるインポート省略)難易度 標準無料

次のコードの出力として正しいものを選べ(import 文は一切書かれていない)。

1  public class Q10 {
2      public static void main(String[] args) {
3          java.util.List<Integer> list = new java.util.ArrayList<>();
4          list.add(42);
5          System.out.println(list);
6      }
7  }
  1. A[42]
  2. Bコンパイルエラー(import java.util.List;import java.util.ArrayList; が無い)
  3. C42(角括弧は付かない)
  4. D実行時に NoClassDefFoundError が発生する(java.util は事前インポート必須)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

import は「毎回完全修飾名を書く手間を省くための構文糖衣」であり、必須ではない。 型を使用するたびに完全修飾名(パッケージ名を含むフルネーム)で記述すれば、import 文が無くてもコンパイル・実行できる。

本コードは java.util.Listjava.util.ArrayList をそれぞれ完全修飾名で記述しており、意味的には import java.util.*; をした上で ListArrayList と書くのと同じ。 list.add(42) でオートボクシングされた Integer(42) が追加され、listtoString()AbstractCollection 由来)は要素をカンマ区切りで [ ] 内に出力する。

各誤答が違う理由
  • B完全修飾名で書けば import は不要。java.util.Listjava.util.ArrayList と正しく完全修飾されているためコンパイルは通る。
  • CListtoString() はコレクションの内容を [ ] で囲んで表示する仕様。単一の数値だけが出力されるわけではない。
  • Djava.util パッケージのクラスは標準ライブラリに含まれ、完全修飾名で参照する限り解決に失敗することはない。
ひっかけ: 「import が無いコードはコンパイルできない」という思い込みが罠。java.lang パッケージ(String 等)だけが唯一暗黙にインポートされているが、それ以外のパッケージも完全修飾名を使えば import 無しで参照可能
コマンド例と想定される挙動(未実行)
出力:
[42]
公式ドキュメント・関連JLS SE11 §6.5.5 Meaning of Type Names
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
この分野をもっと解いて、得点源に
Java基礎 を含む問題を分野別に演習できます。
演習する →