gpt4 book ai didi

java - 将内部类更改为静态时编译失败

转载 作者:行者123 更新时间:2023-12-01 11:34:55 25 4
gpt4 key购买 nike

将非静态内部类更改为静态时,为什么运行代码时会出现编译时错误 -

Illegal enclosing instance specification

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{}
}

以其他成员为例,这只是在类的引用上调用静态成员的约定和良好实践,但如果您在对象上调用它们,它们不会显示编译失败。那么为什么会出现编译失败呢?

最佳答案

如果内部类是非静态的,那么您需要外部类的实例来创建内部类的实例。但静态类的情况并非如此,内部静态类的实例可以在没有外部类实例的情况下存在。

静态示例:

InnerClass ic = new Outer.InnerClass();

请注意,我没有创建外部类的新实例。

编辑:reference

关于java - 将内部类更改为静态时编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30102113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com