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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于内部类访问局部变量时,局部变量要定义成常量的问题,课堂上老师举的例子不足以说明问题,许多同学还是懵懵哒,

我特意写了一个例子,当方法弹栈后,局部变量就随之消失,
如果还要去访问一个不存在变量,是非法的

欢迎留言!

[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();
	}
}

0 个回复

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