标签:
一个方法内部有两个线程共享内部类对象的时候,这个方法的局部变量如果能被访问,
则就成为临界资源,导致程序不稳定,所以必须是final的。
反正总而言之,java就是不允许你在局部内部类里面更改所在方法的局部变量就是了
public class MyBase {
public AnoClass func(final int i){
return new AnoClass(){
int j=i;
{
System.out.println("Anonymous Inner class");
}
public void func(){
System.out.println("Inner AnoClass");
}
};
}
/**
* @param args
*/
public static void main(String[] args) {
MyBase mybase = new MyBase();
AnoClass anoClass = mybase.func(5);
anoClass.func();
}
}
class AnoClass{
public void func(){
System.out.println("AnoClass.");
}
}
标签:
原文地址:http://my.oschina.net/zhenglingfei/blog/410178