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

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

翻译:
不能在定义在不同方法中的内部类中找到一个未经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

设计原因:
挖坑先*******
********
目前只是知道和堆栈有关,应该是防止内部类取到内存空间已经被回收的变量.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值