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
修改办法:
1.在报错类外的方法(此例是main方法)中,将变量修饰符加上final.
2.在报错类的外部类(此例是Test类)声明变量为静态变量static
设计原因:
挖坑先*******
********
目前只是知道和堆栈有关,应该是防止内部类取到内存空间已经被回收的变量.
翻译:
不能在定义在不同方法中的内部类中找到一个未经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
设计原因:
挖坑先*******
********
目前只是知道和堆栈有关,应该是防止内部类取到内存空间已经被回收的变量.
相关文章推荐
- Cannot refer to a non-final variable music inside an inner class defined in a different method
- Cannot refer to a non-final variable mylis inside an inner class defined in a different method
- "Cannot refer to a non-final variable * inside an inner class defined in a different method"错误解析
- java 更换皮肤问题Cannot refer to a non-final variable inside an inner class defined in a different method
- JAVA错误:Cannot refer to a non-final variable * inside an inner class defined in a different method
- Cannot refer to a non-final variable inside an inner class defined in a different method
- Cannot refer to a non-final variable music inside an inner class defined in a different method
- Cannot refer to a non-final variable file inside an inner class defined in a different method
- Cannot refer to a non-final variable response inside an inner class defined in a different method
- Cannot refer to a non-final variable * inside an inner class defined in a different method错误问题
- Cannot refer to a non-final variable anim inside an inner class defined in a different method
- Cannot refer to a non-final variable inside an inner class defined in a different method
- JAVA错误:Cannot refer to a non-final variable * inside an inner class defined in a different method
- Cannot refer to a non-final variable mylis inside an inner class defined in a different method
- Cannot refer to a non-final variable hql inside an inner class defined in a different method
- Cannot refer to a non-final variable i2 inside an inner class defined in a different method 的真正原因
- JAVA错误:Cannot refer to a non-final variable * inside an inner class defined in a different method
- Cannot refer to a non-final variable * inside an inner class defined in a different method"错误解析
- Cannot refer to a non-final variable mylis inside an inner class defined in a different method
- Cannot refer to a non-final variable * inside an inner class defined in a different method"错误解析