老师说java1.8不用加final,我试了一下。
- class InnerClass {
- public static void main(String[] args) {
- Outer o = new Outer();
- o.method();
- }
- }
- class Outer {
- public void method() {
- int num = 10;
- class Inner {
- public void print() {
- System.out.println(num);
- }
- }
-
- num++;
- Inner i = new Inner();
- i.print();
- }
- }
复制代码
大家注意,我在方法变量中对局部变量进行了再次赋值。
编译时报错:
从内部类中访问局部变量需要最终类型或世界上的最终类型。
我认为实际上在这种情况下局部变量不管有没有加上final,编译时都按final处理,并不是老师说的bug问题。 |
|