【Java SE17 Silver 模擬試験】A-18

Java SE17 Silver 模擬試験
Java SE17 Silver 模擬試験

問題

次のコード断片の//[ A ]の部分に記述するとコンパイルエラー、または実行時に例外がスローされるものはどれですか。(3つ選択)

Main.java

import java.util.ArrayList;
import java.util.List;

public class Main {
	public static void main(String... args) {
		Student[] students = { new Student("Duke"), new Student("Scott"), new Student("Sakila") };
		List<Student> list = new ArrayList<>();
		for (Student s : students) {
			list.add(s);
		}
		//[ A ]
	}
}

Student.java

record Student(String name) {}

選択肢

A) list.set(3, new Student("Candy"));
B) list.add(new Student("Duke"));
C) list.add(new Student(null));
D) list.add(null);
E) list.add(0, new Student(""));
F) list.add(new Student());
G) list.add("Candy");
H) list.set(1, new Student("Wendy"));

解答

A) list.set(3, new Student("Candy"));
B) list.add(new Student("Duke"));
C) list.add(new Student(null));
D) list.add(null);
E) list.add(0, new Student(""));
F) list.add(new Student());
G) list.add("Candy");
H) list.set(1, new Student("Wendy"));

解説

A)list.set(3, new Student(“Candy”));
実行時に IndexOutOfBoundsException がスローされますlist には 3 つの要素しか存在しないため、index 3 に対して set 操作を行うと例外が発生します。list.size() が3なので、setindex 2 までしか有効ではありません。

B)list.add(new Student(“Duke”));
エラーになりませんlist に新しい Student("Duke") を追加することは問題ありません。

C)list.add(new Student(null));
エラーになりませんStudentname フィールドに null を渡すことは許可されています。実行時にエラーは発生しません。

D)list.add(null);
エラーになりませんArrayListnull 要素を追加することが可能です。

E)list.add(0, new Student(“”));
エラーになりませんlist の先頭に空文字列の Student オブジェクトを追加することは可能です。

F)list.add(new Student());
コンパイルエラーになりますStudentrecord で定義されているため、デフォルトのコンストラクタは存在しません。new Student() はコンパイルエラーになります。

G)list.add(“Candy”);
コンパイルエラーになりますlistList<Student> 型であり、文字列 "Candy" を追加することは型の不一致によりコンパイルエラーになります。

H)list.set(1, new Student(“Wendy”));
エラーになりませんindex 1 に新しい Student("Wendy")set することは有効です。

前の問題へ SE17_A-17

次の問題へ SE17_A-19


対象資格:Java SE17 認定資格