Compilation error String cannot
2018-07-24 本文已影响0人
泡泡爱上巧克力_7122
public class StrTest {
public static void main(String[] args) {
int i = 10; Object obj =i;
if(obj instanceof String) String s=(String) obj;
}}
出现String cannot be resolved to a variable错误,但是如果改成这样
public class StrTest2 {
public static void main(String[] args) {
int i = 10; Object obj =i;
String s=null;
if(obj instanceof String) s=(String) obj;
}}
没有错误。
出现这个编译错误的原因在于StrTest 1中if语句中的变量s作用域仅在{}内,编译器阻止你这么做,认为你出了作用域外我们都不能使用这个变量,并以此认为这是不必要的代码。而StrTest2中作用域在main中。但是在Str1中我们这么写
if(obj instanceof String) {String s=(String) obj;} 由于有{}的作用,编译器认为你申明的变量的作用域范围,因此没有报错