您的位置:首页 > Web前端

Cannot refer to a non-final variable xxxxx inside an inner class defined in a different method

2017-03-31 09:14 399 查看
 今天专门解决这个语法错误,详细解释一下错误原因,以及修改办法.其实最主要的是从语言设计者的角度考虑,为什么要让这种代码不通过,通过会造成什么后果,这属于比较高级的内容,我暂时想不透彻,只是姑妄言之,权当培养意识了.

翻译:

不能在定义在不同方法中的内部类中找到一个未经final修饰的变量xxx

public class Test{

public static void main (String[] args){
String  str1 = "blog";

class InnerClass{
void outputSomething(){
System.out.println(str1);//报错,Can't refer to a non-final variable str1 inside an inner class defined in a different method
}
}
}
}


修改办法:

1.在报错类外的方法(此例是main方法)中,将变量修饰符加上final.

2.在报错类的外部类(此例是Test类)声明变量为静态变量static

设计原因:

挖坑先*******

********

目前只是知道和堆栈有关,应该是防止内部类取到内存空间已经被回收的变量.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class 语言 设计
相关文章推荐