Тема: switch-выражения.
Дано:
int a = 1;
Integer b = null;
Найти тип и значение переменной r
после выполнения каждого из выражений:var r = switch (1) { case 1 -> a; case 2 -> b; default -> 0; }; // end switch expression
var r = switch (1) { case 1 -> a; case 2 -> b; default -> null; }; // end switch expression
var r = switch (1) { case 1 -> a; case 2 -> b; default -> (Integer) null; }; // end switch expression
var r = switch (2) { case 1 -> a; case 2 -> b; default -> 0; }; // end switch expression
var r = switch (2) { case 1 -> a; case 2 -> b; default -> null; }; // end switch expression
var r = switch (2) { case 1 -> a; case 2 -> b; default -> (Integer) null; }; // end switch expression
int = 1;
(Типы результирующих выражений могут быть преобразованы к типуint
).Integer = 1;
(Выражениеnull
в меткеdefault
, имеет типnull
, несовместимый с типомint
).int = 1;
(Типы результирующих выражений могут быть преобразованы к типуint
).int
. Применяется автоматическое преобразование к типуint
. Поскольку значением выраженияb
являетсяnull
, при попытке пребразования будет выброшено исключениеNullPointerException
.Integer = null;
(Выражениеnull
в меткеdefault
, имеет типnull
, несовместимый с типомint
).int
. Применяется автоматическое преобразование к типуint
. Поскольку значением выраженияb
являетсяnull
, при попытке пребразования будет выброшено исключениеNullPointerException
.