AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
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作成・AIで再検証済

解説

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

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

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

この問題集の作り方

  1. 問題と解説はAIが作成しています。この資格の問題に、有資格者(著者)の監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  5. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
Java基礎 を含む問題を分野別に演習できます。
演習する →