我想知道这段代码工作的原因,在这段代码中,我实例化了一个if块中的对象,而这个对象的作用域在整个代码的if块之外.这种情况的特殊性在于,它仅在条件为假时才起作用,并且在条件为真的情况下具有相应的抛出异常.如果该条件没有被否定或没有引发,则在代码中的任何位置都不能再访问该对象.这里是一个代码的例子,完全按照我提到的那样工作,但我想了解为什么会这样,因为我还没有在互联网上找到正式的解释.
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void procesarDatos(Map<String, Object> 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<String, Object> datosA = new HashMap<>();
datosA.put("tipo", "A");
procesarDatos(datosA);
}
}
我试着理解这个代码发生了什么,为什么它会起作用,因为我找不到任何关于它的信息