日期:2014-05-20  浏览次数:20639 次

请教final
书上说:
在main()中,建立一个AlwaysEven对象,它必须是final的,因为他要被一个继承自Thread的匿名内部类所访问,如果线程读出的值不是偶数,它将把这个值打印出来(以证明它捕获了对象的不稳定状态),并退出程序

这里:
为什么要是final,不为final行不行...
还有...请教下怎么学习线程会好一点

------解决方案--------------------
局部类访问的局部变量,必须被声明为final。这个是语法。
eg。

public class Test {

public void start() {
final int t = 0; // start的局部变量

class Test2 implements ActionListener{ //局部类 --内部类的一种
public void actionPerformed(ActionEvent e) {
if(t==0){
System.out.print(t);
}
}
}
}

}
------解决方案--------------------
请找前面的帖子,大概有一周以上了
这个是处于安全的考虑

局部内部类要使用局部变量是需要变量是final的,出于安全的考虑