Мне хотелось бы знать, почему работает этот код, в котором я создаю экземпляр объекта внутри блока if, а область действия этого объекта находится за пределами блока if во всем коде. Особенность этого случая заключается в том, что он работает только в том случае, если условие ложно и если оно имеет соответствующее исключение throw в случае, если оно истинно. Если условие оставить без отрицания или без throw, этот объект больше не будет доступен нигде в коде. Вот пример кода, который работает именно так, как я упомянул, но хотелось бы понять причину этого, так как формального объяснения в интернете я не нашел.
Код: Выделить всё
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void procesarDatos(Map datos) {
if (!(datos.get("tipo") instanceof String tipo && tipo.equals("A"))) {
throw new RuntimeException("Error");
}
System.out.println(tipo);
}
public static void main(String[] args) {
Map datosA = new HashMap();
datosA.put("tipo", "A");
procesarDatos(datosA);
}
}
Источник: https://stackoverflow.com/questions/781 ... -condition