关于内部类访问局部变量时,局部变量要定义成常量的问题,课堂上老师举的例子不足以说明问题,许多同学还是懵懵哒,
我特意写了一个例子,当方法弹栈后,局部变量就随之消失,
如果还要去访问一个不存在变量,是非法的
欢迎留言!
[Java] 纯文本查看 复制代码 package com.haima.myreview;
//举例说明:为什么内部类访问局部变量时,局部变量要用final修饰
public class Test2_内部类访问局部变量 {
public static void main(String[] args) {
//获取一个引用指向内部类对象
Object obj = new Outer().method();
//method方法弹栈后,局部变量还存在
System.out.println(obj.toString());
}
}
class Outer {
public Object method() {
//局部变量(假设没有加final)
final String s = "abc";
//内部类
class Inner {
//重写toString方法,目的是为了obj可以编译运行
public String toString() {
//访问局部变量
return s + "";
}
}
//返回内部类对象
return new Inner();
}
}
|