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

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

問題

次のコードでコンパイルエラーになる箇所は(1)から(9)のどれですか。(3つ選択)

 public class Main {
	 public static void main(String... args) {
		Base b = new MyClass();
	 MyType t = new MyClass();
  	 b.print("one");                                     //(1)
		(MyType)b.print("two");             //(2)
		((MyType)b).print("three");       //(3)
 	 t.print("four");                                     //(4)
		(MyType)t.print("five");              //(5)
	        ((MyType)t).print("six");            //(6)
	 }
 }

sealed interface MyType permits MyClass {           //(7)
	 void print(String s);
 }

class Base {                                                                //(8)
	 public static final String DELIMITER = ",";
}

final class MyClass extends Base implements MyType {    //(9)
 	 public void print(String s) {
		System.out.print(s + Base.DELIMITER);
	 }
}

選択肢

A)(1)

B)(2)

C)(3)

D)(4)

E)(5)

F)(6)

G)(7)

H)(8)

I)(9)

解答

A)(1)

B)(2)

C)(3)

D)(4)

E)(5)

F)(6)

G)(7)

H)(8)

I)(9)

解説

A)(1)
→ エラーになりません。bBase 型の変数で、実際には MyClass のインスタンスが代入されています。b.print("one")MyClass のメソッド print が呼び出されますが、これは問題ありません。

B)(2)
→ エラーになります。(MyType)b.print("two") という式は、b.print("two")MyClassprint メソッドを呼び出しますが、戻り値が void であり、それを MyType にキャストしようとしています。void はキャストできないため、コンパイルエラーになります。

C)(3)
→ エラーになりません。bMyType にキャストした後、print("three") を呼び出しています。b の実際の型は MyClass なので、キャストは有効であり、コンパイルエラーにはなりません。

D)(4)
→ エラーになりません。tMyType 型の変数で、MyClass のインスタンスが代入されています。t.print("four") は問題なく MyClass のメソッドを呼び出します。

E)(5)
→ エラーになります。(MyType)t.print("five")t.print("five")void を返すため、void に対してキャストしようとしてエラーになります。

F)(6)
→ エラーになります。((MyType)t).print("six") はキャスト自体は正しいですが、キャストは不要です。t は既に MyType 型なので、明示的なキャストは不要です。冗長なキャストはエラーを引き起こします。

G)(7)
→ エラーになりません。sealed インターフェースと permits は適切に使用されており、MyClass がインターフェースを実装しているので問題ありません。

H)(8)
→ エラーになりません。Base クラスは正しく定義されており、DELIMITERMyClass で問題なく使用されています。

I)(9)
→ エラーになりません。MyClassBase クラスを拡張し、MyType インターフェースを実装しているので、問題なくコンパイルされます。

前の問題へ SE17_A-16

次の問題へ SE17_A-18


対象資格:Java SE17 認定資格