【发布时间】:2014-01-25 12:06:09
【问题描述】:
如果我不能创建静态类的实例,为什么我可以实例化静态内部类?
在下面的代码中,Counter 是一个静态内部类,但它可以被实例化,就好像它不是:
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);
}
}
如果 Counter 不是静态类,则可以使用以下 sintax 对其进行实例化:
Counter counter1 = new Task().new Counter();
Counter counter2 = new Task().new Counter();
但我无法从实际意义上弄清楚这些方法之间的区别。
【问题讨论】:
-
谢谢,但我不同意,因为引用的问题解释了内部类和嵌套类之间的区别。我在问为什么我可以实例化一个静态内部类,就好像它不是静态的一样。在我的拙见中,这不是一回事。但我尊重你的观点。
-
和要调用
thread.yield()或者Thread.yield()一样
标签: java