【发布时间】:2015-05-07 13:12:23
【问题描述】:
关于将非静态内部类更改为静态为什么运行代码时出现编译时错误说-
非法封闭实例规范
public class TestingInnerStatic{
public static void main(String args[]) {
InnerSame innerSame = new TestingInnerStatic().new InnerSame();//compile fail
Outer.InnerDiff innerDiff = new Outer().new InnerDiff();//compile fail
}
public void main() {
InnerSame innerSame = new InnerSame();
Outer.InnerDiff innerDiff = new Outer().new InnerDiff();//compile fail
}
static class InnerSame{}
}
class Outer{
static class InnerDiff{}
}
以其他成员为例,这只是在类的引用上调用静态成员的约定和良好做法,但是如果您在对象上调用它们,它们不会显示编译失败。那么为什么会出现编译失败?
【问题讨论】:
-
新 Boxing1().new InnerSame();尝试更改为 new Boxing1.InnerSame();其他失败也一样..
-
为什么这在对象上不可用?
-
类 Outer 在它自己的文件中吗?
-
我认为
new Boxing1().new InnerSame();应该是new TestingInnerStatic().new InnerSame(); -
@Pratik this is only 重载。
标签: java static inner-classes