爲何匿名類中使用局部變量時要聲明爲final呢

一個方法內部有兩個線程共享內部類對象的時候,這個方法的局部變量若是能被訪問,java

則就成爲臨界資源,致使程序不穩定,因此必須是final的。ide

反正總而言之,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();
        } 資源

} it

class AnoClass{
        public void func(){
                System.out.println("AnoClass.");
        }
} class

相關文章
相關標籤/搜索