如果我不能创建一个静态类的实例,为什么我可以实例化一个静态内部类?为什么我可以实例化一个静态内部类?
在代码波纹管,计数器是一个静态内部类,但它可以被实例化为如果不是:
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()' –