JAVA菜鸟入门(14) Anonymous Class 和 final variable
2015-05-09 06:51
429 查看
Anonymous Class在使用外面的local variable的时候,要declare为final,否则会有compiler error.
原因:
简单地说, JVM为了避免local variable传入anonymous class导致的数据不同步(这个不同步主要和JVM的设计机制相关),要求使用final。
复杂地说: 看这里,非常好的讲解
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。
复杂地说: 看这里,非常好的讲解
相关文章推荐
- JAVA菜鸟入门(12) reference variable是气球的线 +JVM中怎么实现
- JAVA菜鸟入门篇 - 继承VS组合、final关键字 (十六)
- JAVA菜鸟入门(8) Java的Final关键字
- [学习笔记] JAVA菜鸟入门篇-JDK安装以及配置
- JAVA从菜鸟【入门】到新手【实习】一一JDK的安装调试
- JAVA菜鸟入门篇 - 面向对象三大特征之一:继承 ,方法重写(override)和Object类 (十四)
- JAVA菜鸟入门(9) Java打印一维数组,二维数组
- Java菜鸟入门First project
- JAVA报错:Variable 'vv' is accessed from within inner class, needs to be declared final
- Java菜鸟入门(20) Producer Consumer经典代码
- java入门之final
- 菜鸟入门:Java程序员学习之路
- JAVA菜鸟入门篇 - 二维数组(二十五)
- Java Applet 入门 14
- JAVA从菜鸟【入门】到新手【实习】一一语言学习(英语与语文)
- java程序员菜鸟入门之三java面向对象
- Java菜鸟逆袭之入门篇(附讲解)
- java程序员菜鸟入门之七java集合
- java程序员菜鸟入门之八HTML
- 规划与展望——基本计算机总结,JAVA小白到菜鸟【入门水平】