我正在阅读 Oracle 官方文档 Java 17 中模式变量作用域 ,在下面的示例中,testScope1
方法按照文档中所述产生了效果,但是 testScope2
方法会出现编译错误。我无法确定为什么方法的返回类型为 void
会导致此问题。
interface Vehicle{}
class Car implements Vehicle{}
class Pattern{
public int testScope1(Vehicle v){
if(!(v instanceof Car c)){
return 1;
}
System.out.println(c.toString()); //WORKS FINE
return 2;
}
public void testScope2(Vehicle v){
if(!(v instanceof Car c)){
}
System.out.println(c.toString()); //COMPILE TIME ERROR: Cannot resolve symbol c
}
}