老毕在视频里讲到:当内部类在“局部”位置时,不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。而且看他视频里演示的结果确实佐证了这点。可是当我用“jdk1.8.0_25”版本来编译按老毕思路写出的错误代码时,能编译通过,而且出正确结果。想询问下论坛里的高手,是否在新版本里在“局部”位置的内部类也能访问非final修饰的局部变量
- class Outer
- {
- int x=3;
- void method(int a)
- {
- int y=4;
- class Inner
- {
- void function()
- {
- System.out.println(x);
- }
- void function2()
- {
- System.out.println(a);
- }
- void function3()
- {
- System.out.println(y);
- }
- }
- new Inner().function(); <font color="#ff0000">//内部类访问外部类中的成员变量x</font>
- new Inner().function2(); <font color="#ff0000">//内部类访问局部变量a</font>
- new Inner().function3(); <font color="#ff0000">//内部类访问局部变量y</font>
- }
- }
- class InnerClassDemo4
- {
- public static void main(String[] args)
- {
- new Outer().method(5);
- }
- }
复制代码
|
-
内部类实例.jpg
(125.75 KB, 下载次数: 2)
参考老毕思路写出的错误代码
-
内部类.jpg
(149.41 KB, 下载次数: 4)
老毕课程视频截图
|