请问:如果定义一个匿名内部类,它要访问在它外部定义的一个变量,这个变量必须使用final关键字来修饰,这是为什么呢?请深层次的讲解一下。谢谢!
解决方案 »
- 存入数据库失败有哪几个exception
- 这个题?
- 在html嵌入Java applet 可以打开文件吗?急!
- 请教各位达人一道JAVA基础题,并附上自己的思路,望大家给予指点
- 我是个新手,求教个有关日期的问题.
- 请问java里有像C++一样的cin和cout用于输出吗?
- 我熟悉C++,请大家推荐几本学习JAVA的基础书!
- 一个位移问题???????????//
- 我的窗口上有3个jpanel,我想在窗口上实现功能,根据菜单选择,可以在执行时选择窗口布局方式,可以么?我的代码怎么没反应呢?
- 关于FILEOUTPUT
- 江湖救急啊 multiple points异常是什么意思啊
- tomcat启动时出错!高手帮忙
package testpkg;import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Test extends Frame { private static final long serialVersionUID = 1L; public int i = 1; Panel p1 = new Panel(); Button bt1 = new Button(); public void init() { this.setSize(600, 400);
bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int j = Test.this.i;
System.out.print(j); }
});
p1.add(bt1);
this.add(p1);
} public static void main(String args[]) {
Test t = new Test();
t.init();
t.setVisible(true);
}}
他的匿名内部类中 可以访问到i 并赋值给了 j 给你点提示 内部类就类似于外部类的 方法或属性
如果定义一个匿名内部类,它要访问它所在方法定义的一个变量,这个变量必须使用final关键字来修饰,这是为什么呢?
class MyClass{}
public class AnonInnerClass {
public MyClass get(final int x) {
return new MyClass() {
int xx = x;
};
}
}如果x不是final修饰的,编译不能通过。
用final定义的局部变量就能凝固下来,就能让匿名类随时访问?