如果我不能創建一個靜態類的實例,爲什麼我可以實例化一個靜態內部類?爲什麼我可以實例化一個靜態內部類?
在代碼波紋管,計數器是一個靜態內部類,但它可以被實例化爲如果不是:
public class Task {
static class Counter {
int counter = 0;
void increment() {counter++;}
}
public static void main(String[] args) {
Counter counter1 = new Task.Counter();
Counter counter2 = new Task.Counter();
counter1.increment();
counter2.increment();
counter2.increment();
counter2.increment();
System.out.println("counter1: " + counter1.counter);
System.out.println("counter2: " + counter2.counter);
}
}
如果計數器不是一個靜態類,它cound是使用以下sintax實例:
Counter counter1 = new Task().new Counter();
Counter counter2 = new Task().new Counter();
但我無法弄清楚這些方法在實際手段上的區別。
[Java內部類和靜態嵌套類]的可能重複(http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class) – Mark
謝謝,但我不同意,因爲引用的問題解釋了內部類和嵌套類之間的區別。我問爲什麼我可以實例化一個靜態內部類,就好像它不是靜態的。在我看來,這不是一回事。但我尊重你的觀點。 – outlookrperson
與即將調用'thread.yield()'或Thread.yield()' –