为什么你不能在Java中声明一个类是静态的?
为什么你不能在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();
}
来源:
在同一主题上:
带有私有构造函数的类是静态的。
像这样声明你的班级:
public class eOAuth {
private eOAuth(){}
public final static int ECodeOauthInvalidGrant = 0x1;
public final static int ECodeOauthUnknown = 0x10;
public static GetSomeStuff(){}
}
你可以在不初始化的情况下使用
if (value == eOAuth.ECodeOauthInvalidGrant)
eOAuth.GetSomeStuff();
...
所以,我迟到了晚会,但这是我的两分钱 - 在科林赫伯特的答案的哲学上增加。
在高层次上,你的问题涉及对象和类型之间的差异。 虽然有很多汽车(物体),但只有一个汽车类(类型)。 将某些东西声明为静态意味着您正在“类型”空间中操作。 只有一个。 顶级类关键字已经在“类型”空间中定义了一个类型。 结果“公共静态类车”是多余的。
链接地址: http://www.djcxy.com/p/76127.html上一篇: Why are you not able to declare a class as static in Java?