小程序如下:
class Outer{
static int x = 2;
static class Inner{
}
}
class Test{
public static void main(String[] args){
new Outer.Inner(); //正确
new Outer().new Inner(); //编译报错:限定的新静态类
}
}
我知道访问静态内部类可以不实例化外部类,但是为什么实例化就报错呢?
比如在上面的小程序中,我要输出x,确实可以Outer.x,但是我也可以使用new Outer().x啊,为什么在内部上就报错呢?
如果我创建了一个外部类的对象来调用外部类中的方法:
Outer out = new Outer();
//....省略
然后这个时候我需要使用到内部类中的方法,我认为的情况是可以直接这么写:
out.new Inner().method();
直接使用自己已经创建过的对象,但是结果是这样写会出现上面的错误
没太懂,
实际上使静态内部类成为了一个顶级类
是什么意思呢?