Java 静态内部类与非静态外部类

Java 静态内部类与非静态外部类,java,Java,为什么要在Main.class内部实例化一个Foo类(它的内部类)我必须用static关键字指定它,但是如果我将这个类设置为外部类,那么没有“static”是可能的 公共类主{ 公共静态void main(字符串[]args){ Foo-Foo=新的Foo(); } //类Foo{//要使其工作,我必须添加“static” // } } 但如果Foo.class不是Main.class的内部类,它就可以工作 公共类主{ 公共静态void main(字符串[]args){ Foo-Foo=

为什么要在Main.class内部实例化一个Foo类(它的内部类)我必须用static关键字指定它,但是如果我将这个类设置为外部类,那么没有“static”是可能的

公共类主{
公共静态void main(字符串[]args){
Foo-Foo=新的Foo();
}
//类Foo{//要使其工作,我必须添加“static”
//    }
}
但如果Foo.class不是Main.class的内部类,它就可以工作

公共类主{
公共静态void main(字符串[]args){
Foo-Foo=新的Foo();
}
}
福班{
}

如果将类声明为非静态内部类,则它属于外部类的实例。在静态main方法中没有实例(因为该方法是静态的),因此不允许访问该类


如果您将其声明为外部类,那么Foo类只是一个普通类,可以通过静态和非静态方法访问,因为它不再属于外部类的实例。

:“内部类是一个嵌套类,它不是显式或隐式声明的
静态
。尽管问题与此不同第一,这是相关的,我想你也可以在那里找到你的答案:@Ole V.V.我相信你链接的问题确实回答了这个问题..你清楚地指出了我正在寻找的解决方案。谢谢