Тема: switch-выражения.
Дано:
int a = 1;
Integer b = null;
Найти тип и значение переменной r после выполнения каждого из выражений:var r = switch (1) { case 1 -> a; case 2 -> b; default -> 0; }; // end switch expressionvar r = switch (1) { case 1 -> a; case 2 -> b; default -> null; }; // end switch expressionvar r = switch (1) { case 1 -> a; case 2 -> b; default -> (Integer) null; }; // end switch expressionvar r = switch (2) { case 1 -> a; case 2 -> b; default -> 0; }; // end switch expressionvar r = switch (2) { case 1 -> a; case 2 -> b; default -> null; }; // end switch expressionvar 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.