静态嵌套类时被声明为静态(static)的内部类,它可以不依赖于外部类实例化而实例化。而普通的内部类需要在外部类实例化后才能实例化。以下代码:
package com.zhiyuan.statics;
public class StaticNestedClass_InnerClass {
public static void main(String[] args) {
new InnerClass();
}
class InnerClass{}
public static void foo(){
new InnerClass();
}
public void bar(){
new InnerClass();
}
}
以上编译错误的地方有InnerClass是普通的内部类需要通过外部类实例化而实例化。并且foo和main都是静态的方法,静态方法中没有this所以没有外部类对象,也就无法创建内部类对象。如果需要在静态内部类中创建内部类对象可以这样:
new StaticNestedClass_InnerClass().new InnerClass();
package com.zhiyuan.statics;
public class StaticNestedClass_InnerClass {
public static void main(String[] args) {
StaticNestedClass_InnerClass sta=new StaticNestedClass_InnerClass();
sta.new InnerClass();
}
class InnerClass{}
public static void foo(){
new StaticNestedClass_InnerClass().new InnerClass();
}
public void bar(){
new InnerClass();
}
}