問題
次のコード断片をコンバイル、実行するとどうなりますか。
public class Main {
public static void main(String... args) {
Number n = 0b0110;
if (n instanceof Byte b) {
System.out.println("Byte: " + b);
} else if (n instanceof Short s) {
System.out.println("Short: " + s);
} else if (n instanceof Integer i) {
System.out.println("Integer: " + i);
} else if (n instanceof Long l) {
System.out.println("Long: " + l);
} else {
System.out.println("Not Integral Number");
}
}
}
選択肢
A)コンパイルエラーになる
B)Long: 6 が出力される
C)Not Integral Number が出力される
D)Byte: 6 が出力される
E)NumberFormatException が出力される
F)Short: 6 が出力される
G)Integer: 6 が出力される
解答
A)コンパイルエラーになる
B)Long: 6 が出力される
C)Not Integral Number が出力される
D)Byte: 6 が出力される
E)NumberFormatException が出力される
F)Short: 6 が出力される
G)Integer: 6 が出力される
解説
3行めに記述されているNumber型は、元々Javaで用意されている抽象クラスのNumberクラスです。
ラッパークラスのため、基本データ型は使用できません。
public class Main {
public static void main(String... args) {
Number n = 0b0110; //0b0110は、6を意味する
if (n instanceof Byte b) {
System.out.println("Byte: " + b);
} else if (n instanceof Short s) {
System.out.println("Short: " + s);
} else if (n instanceof Integer i) {
System.out.println("Integer: " + i);
} else if (n instanceof Long l) {
System.out.println("Long: " + l);
} else {
System.out.println("Not Integral Number");
}
}
}
対象資格:Java SE17 認定資格