Flowscoping в Java 21JAVA

Программисты JAVA общаются здесь
Anonymous
Flowscoping в Java 21

Сообщение Anonymous »

Поскольку я готовлюсь к OCPJP 21, наткнулся на тему сфера потока. Br />public class Question28
{

static void getFish(Object fish) {

if(!(fish instanceof String guppy))
System.out.println("Eat!");
else if(!(fish instanceof String guppy)) {
throw new RuntimeException();

}

System.out.println(guppy);

System.out.println("Swim!");
}

public static void main(String args[]) {

getFish("ashish");

}

}

< /code>
Выше приведенный фрагмент результатов в «Невозможно найти символ» для переменной guppy.
Но если я удалю ключевое слово else, как ниже. Переменная Guppy остается в сфере масштаба. Нет ошибки компилятора. < /p>
static void getFish(Object fish) {

if(!(fish instanceof String guppy))
System.out.println("Eat!");
if(!(fish instanceof String guppy)) {
throw new RuntimeException();

}

System.out.println(guppy);
< /code>
Мое второе наблюдение следующим образом
ref Fronippet < /p>
class Sample2 {

static void printNumberTwice(Number number) {

if(!(number instanceof Integer data))
return ;
//System.out.println("Eat!");

System.out.println(data.intValue());

}

public static void main(String args[]) {

printNumberTwice(5);
}

}
< /code>
выше фрагмент успешно компилируется, но если я прокомментирую возврат и вместо этого добавляю оператор SOP, он не может найти символ для данных. < /p>
Пожалуйста, направляйте меня Чтобы понять концепцию.

Подробнее здесь: https://stackoverflow.com/questions/794 ... in-java-21

Вернуться в «JAVA»