A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

老师说java1.8不用加final,我试了一下。
  1. class InnerClass {
  2.         public static void main(String[] args) {
  3.                 Outer o = new Outer();
  4.                 o.method();
  5.         }
  6. }

  7. class Outer {
  8.         public void method() {
  9.                 int num = 10;
  10.                 class Inner {
  11.                         public void print() {
  12.                                 System.out.println(num);
  13.                         }
  14.                 }
  15.         
  16.         num++;
  17.                 Inner i = new Inner();
  18.                 i.print();
  19.         }
  20. }
复制代码

大家注意,我在方法变量中对局部变量进行了再次赋值。
编译时报错:
从内部类中访问局部变量需要最终类型或世界上的最终类型。

我认为实际上在这种情况下局部变量不管有没有加上final,编译时都按final处理,并不是老师说的bug问题。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马