为什么你不能在Java中将一个类声明为静态?
2022-08-31 04:26:34
为什么你不能在Java中将一个类声明为静态?
只有嵌套类可以是静态的。通过这样做,您可以使用嵌套类,而无需外部类的实例。
class OuterClass {
public static class StaticNestedClass {
}
public class InnerClass {
}
public InnerClass getAnInnerClass() {
return new InnerClass();
}
//This method doesn't work
public static InnerClass getAnInnerClassStatically() {
return new InnerClass();
}
}
class OtherClass {
//Use of a static nested class:
private OuterClass.StaticNestedClass staticNestedClass = new OuterClass.StaticNestedClass();
//Doesn't work
private OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
//Use of an inner class:
private OuterClass outerclass= new OuterClass();
private OuterClass.InnerClass innerClass2 = outerclass.getAnInnerClass();
private OuterClass.InnerClass innerClass3 = outerclass.new InnerClass();
}
来源:
关于同一主题:
默认情况下,顶级类是静态的。默认情况下,内部类是非静态的。您可以通过显式将内部类标记为静态来更改内部类的默认值。顶级类由于是顶级的,因此不能具有非静态语义,因为不能有要引用的父类。因此,无法更改顶级类的默认值。