Вставка следующего кода Groovy в IntelliJ IDEA:
String x
switch ("hi") {
case "hi":
x = "data" // Assignment is not used
break
default:
throw new RuntimeException()
}
/*if ("hi" == "hi") {
x = "data"
} else {
throw new RuntimeException()
}*/
try {
println x // Variable 'x' might not be assigned
} finally {
/*} catch (ignored) {*/
println x
}
При первом println x
в операторе try
я получаю предупреждение о проверке "Переменная 'x' может быть не назначена".
Я запутался в двух отношениях:
- , если вы замените оператор switch функционально эквивалентным оператором if / else, предупреждение больше не будет отображать
- ifвы заменяете
finally
на catch (ignored)
, предупреждение больше не показывает
Для меня такое поведение не имеет смысла.Может кто-нибудь объяснить, почему предупреждение отображается в первую очередь и почему замена вышеперечисленного устраняет его?
Я использую IntelliJ v2018.1.2 (Ultimate) и плагин Groovy v9.0.