【Java SE17 Silver 模擬試験】B-42

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

問題

次のコードの //[ A ] に記述するとコンパイルエラーになるものはどれですか。

public class Main {
	public static void main(String... args) {
		Item item1 = new Item("Book", 1000);
		Item item2 = new Item("Pen", 100);
		//[ A ]
	}
}

record Item(String name, int price) { }

選択肢

A)
int hashCode = item2.hashCode();
B)
String name = item1.name();
C)
int price = item2.price();
D)
System.out.println(item1);
E)
item2.price = 200;
F)
Item item3 = new Item();
G)
boolean b = item1.equals(item2);
H)
System.out.println(item2.toString());

解答

A)
int hashCode = item2.hashCode();
B)
String name = item1.name();
C)
int price = item2.price();
D)
System.out.println(item1);
E)
item2.price = 200;
F)
Item item3 = new Item();
G)
boolean b = item1.equals(item2);
H)
System.out.println(item2.toString());

解説

A)int hashCode = item2.hashCode();
有効hashCode() メソッドは record に自動的に生成されます。

B)String name = item1.name();
有効name() メソッドは record に自動的に生成されます。

C)int price = item2.price();
有効price() メソッドは record に自動的に生成されます。

D)System.out.println(item1);
有効toString() メソッドは record に自動的に生成されます。

E)item2.price = 200;
コンパイルエラーrecord のフィールドはイミュータブルなので、変更できません。

F)Item item3 = new Item();
コンパイルエラーrecord はすべてのフィールドを指定する必要があるため、引数なしでインスタンスを作成できません。

G)boolean b = item1.equals(item2);
有効equals() メソッドも自動的に生成されます。

H)System.out.println(item2.toString());
有効toString() メソッドが自動的に生成されるため、正しく出力されます。

前の問題へ SE17_B-41

次の問題へ SE17_B-43

対象資格:Java SE17 認定資格