AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
クラス構造(public クラス名とファイル名の一致)難易度 標準無料

ファイル名 Main.java として保存された次のコードのコンパイル結果として正しいものを選べ。

1  public class Runner {
2      public static void main(String[] args) {
3          System.out.println("run");
4      }
5  }
  1. Aコンパイルエラー(public クラス Runner はファイル名と一致していない)
  2. Bコンパイル成功・実行して run と出力される
  3. Cコンパイル成功。ただし実行時は java Runner ではなく java Main と指定する必要がある
  4. Dコンパイルエラー(クラス名に Runner のような一般名詞は使用できない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・AIで再検証済

解説

トップレベル型が public として宣言されている場合、その型名はソースファイル名(拡張子 .java を除いた部分)と完全に一致していなければならない。

本コードのクラス名は Runner だが、ファイル名は Main.java であり一致しない。よってコンパイルエラーになる。

解決するには、ファイル名を Runner.java に変更するか、クラス名を Main に変更する(クラス名を public のまま変えない場合はファイル名の方を合わせるのが一般的)。

各誤答が違う理由
  • Bpublic トップレベルクラスの名前はファイル名と一致必須。Runner と Main.java は一致しないため、コンパイル自体が失敗する。
  • Cそもそもコンパイルが通らないため実行方法以前の問題。public クラス名とファイル名の不一致はコンパイルエラーとして検出される。
  • Dクラス名の語彙自体に制約は無い(予約語でなければ任意の識別子が使える)。エラーの原因はファイル名との不一致であり、名前の意味内容ではない。
ひっかけ: 「クラス名は何でも良く、実行時に java Main と指定すれば動く」は誤り。public トップレベル型はコンパイル時にファイル名との一致が強制される(public でなければファイル名との一致は不要)。
コマンド例と想定される挙動(未実行)
javac Main.java:
Main.java:1: error: class Runner is public, should be declared in a file named Runner.java
public class Runner {
       ^
→ コンパイル不成立(実行に至らない)。
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

この問題集の作り方

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