1. 静态嵌套类(Static Nested Class) 和内部类(Inner Class)的不同?
静态嵌套类:Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。
内部类:需要在外部类实例化后才能实例化,其语法看起来挺诡异的。
2. 下面的代码哪些地方会产生编译错误?
class Outer {
class Inner {
}
public static void foo() {
new Outer().new Inner();
}
public void bar() {
new Inner();
}
public static void main(String[] args) {
new Outer().new Inner();
}
}
Java 中非静态内部类对象的创建要依赖其外部类对象,上面的面试题中 foo 和 main 方法都是静态方法,静态方法中没有 this,也就是说没有所谓的外部类对象,因此无法创建内部类对象。