我什么时候想让我的私人课程保持静态?
通常,将私有类声明为静态有什么好处吗?
在什么情况下,我想使用以下一种而不是另一种?
private static class Foo
{
...
}
与
private class Foo
{
...
}
通常,将私有类声明为静态有什么好处吗?
在什么情况下,我想使用以下一种而不是另一种?
private static class Foo
{
...
}
与
private class Foo
{
...
}
我认为这是一个很好的起点:http://java67.blogspot.fi/2012/10/nested-class-java-static-vs-non-static-inner.html
1) 嵌套静态类不需要引用 Outer 类,但非静态嵌套类或 Internal 类需要外部类引用。如果不创建 Outer 类的实例,则无法创建 Inner 类的实例。这是在使嵌套类为静态或非静态时要考虑的最重要的事情。
2)静态类实际上是类的静态成员,可以在静态上下文中使用,例如Outer类的静态方法或静态块。
3)静态和非静态嵌套类之间的另一个区别是,您无法直接访问非静态成员,例如方法和字段到嵌套的静态类中。如果这样做,您将收到类似“非静态成员不能在静态上下文中使用”的错误。而内部类可以访问外部类的静态和非静态成员。
如果我理解正确,问题是私有类与私有静态类。所有回答通常都是关于内部类的,这些类不是100%适用于这个问题。所以首先要做的事情是:
来自 geeksforgeeks:
正如接受的响应所说,静态和非静态嵌套类在访问外部类之外的方法/字段的方式和可能性上有所不同。但是,如果类 A 中的私有类 B,则不会有此问题,因为 B 无论如何都无法在 A 外部访问。
现在,从类A内部,对于非静态字段/方法,您始终可以通过说或只是来引用类B,并且B是私有类还是私有静态类并不重要(没有编译/运行时错误)。对于静态字段/方法,您需要使用私有静态类。new A.B()
new B()
此外,如果你想从B内部访问A的非静态字段,那么你就不能将B作为私有静态类。
我通常更喜欢私有静态类,除非我不能像前一种情况那样使用它,否则intellij会给出警告。