1. 程式人生 > >java的靜態方法是不能直接new內部類的

java的靜態方法是不能直接new內部類的

因為靜態方法可以被類名.方法名()直接呼叫,可以說是“單例“的,內部類可以訪問外部類成員變數,如果靜態方法中new了同一個內部類的多個物件,就會出現 類名.方法名(多個物件操作同一個外部類變數或者方法的情況,出現“多個副本“,與“單例”規則不符,會出現方法邏輯問題)

e.g public class Test { private int value;

class InnerClass{
    public InnerClass(){
        System.out.println(value);
    }
}

public Test(int value){
    this.value = value;
}
public static void f(){
    new InnerClass();
}

public static void main(String[] args){
    Test t1 = new Test(10);
    Test t2 = new Test(20);
    Test.f();
    //value到底是多少? 
}

}