【问题标题】:Should I use static class within public class, or just a lone class我应该在公共类中使用静态类,还是只使用一个单独的类
【发布时间】:2013-10-15 02:05:24
【问题描述】:
如果我有一个公共课程,就叫它ClassA,这需要另一个课程,叫它ClassB,并且:
1) 我的程序中没有其他类需要访问ClassB。
2)ClassB不需要静态访问ClassA的状态。
如果这两点成立,是否有关于ClassB 是否应该是public static class ClassB { 在 public class ClassA {,或者ClassB 是否应该是class ClassB { 的指导方针在ClassA之外?
【问题讨论】:
标签:
java
class
static
public
【解决方案1】:
因为它不会在ClassA 之外使用,所以最好是:
private class ClassB {
}
【解决方案2】:
ClassB 是否独立于ClassA 做一项可定义的、有用的工作?如果它只是ClassA 实现的一部分,则在ClassA 中将其定义为私有静态类。如果它具有独立的含义,则将其定义为顶级类,根据其潜在用途的范围具有包或公共访问权限。
【解决方案3】:
由于 ClassB 不需要静态访问 ClassA 的状态,所以 classB 可以是私有内部类。
非静态嵌套类(内部类)可以访问其他成员
封闭类的,即使它们被声明为私有的。静止的
嵌套类无权访问封闭的其他成员
班级。作为 OuterClass 的成员,可以声明一个嵌套类
私有的、公共的或受保护的。
(来自 javadoc)