为什么要在Main.class内部实例化Foo类(其内部类),但必须使用static关键字指定它,但是如果我将此类作为外部类,则可以不使用“ static”吗?
public class Main {
public static void main(String[] args) {
Foo foo = new Foo();
}
// class Foo { // to make it work I have to add 'static'
// }
}
但是,如果Foo.class不是Main.class的内部类,那么它将起作用。
public class Main {
public static void main(String[] args) {
Foo foo = new Foo();
}
}
class Foo {
}
答案 0 :(得分:0)
如果您将该类声明为非静态内部类,则它属于外部类的实例。在您的静态main方法中,您没有实例(因为该方法是静态的),因此不允许您访问该类。
如果将其声明为外部类,则Foo类只是普通类,可以从静态和非静态方法访问,因为它不再属于外部类的实例。