您的位置:首页 > 编程语言 > Java开发

JAVA菜鸟入门(14) Anonymous Class 和 final variable

2015-05-09 06:51 429 查看
Anonymous Class在使用外面的local variable的时候,要declare为final,否则会有compiler error.

import javax.swing.JButton;
import javax.swing.JTextField;

public class HelloWorldAnonymousClasses {

public HelloWorldAnonymousClasses() {
JButton btnOK = new JButton();
/**
* without final, there will be a compilation error.
* JTextField jtfContent = new JTextField();
*/
final JTextField jtfContent = new JTextField();
btnOK.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent event){
jtfContent.setText("I am OK");
}
} );
}
public static void main(String... args) {
HelloWorldAnonymousClasses hwdc = new HelloWorldAnonymousClasses();
}
}


原因:

简单地说, JVM为了避免local variable传入anonymous class导致的数据不同步(这个不同步主要和JVM的设计机制相关),要求使用final。

复杂地说: 看这里,非常好的讲解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FundamentalJava