@RitcheeQinG
2020-05-06T07:54:39.000000Z
字数 919
阅读 324
Java
和static修饰的其他内容一样,静态内部类代表它是属于类本身的,而内部类则是属于类的实例的
具体见下面注释里吧
举例
public class OuterClass {private InnerClass innerClass = new InnerClass();private InnerClass innerClass2 = new OuterClass().new InnerClass();private static InnerClass innerClass3 = new OuterClass().new InnerClass();private static StaticInnerClass staticInnerClass = new StaticInnerClass();// 和静态变量or方法一样,静态内部类是没法被实例调用的private StaticInnerClass staticInnerClass2 = new OuterClass.StaticInnerClass();public void fun1() {InnerClass innerClass = new InnerClass();InnerClass innerClass2 = new OuterClass().new InnerClass();StaticInnerClass staticInnerClass = new StaticInnerClass();}public static void fun2() {// InnerClass innerClass = new InnerClass(); 静态方法里内部类没法直接new出来// 必须先实例化外部类,再用外部类的实例new出来InnerClass innerClass2 = new OuterClass().new InnerClass();StaticInnerClass staticInnerClass = new StaticInnerClass();}public class InnerClass {}public static class StaticInnerClass {}}
这和静态方法里没法调用非静态变量,非静态变量没法赋值静态变量应该是一样的