非公共顶级类与静态嵌套类
问题内容:
在我看来,创建辅助类时,非公共顶级类和静态嵌套类实际上执行相同的任务。
A.java
public class A
{
public static main (String[] args)
{
AHelper helper = new AHelper();
}
}
class AHelper {}
A.java
public class A
{
public static main (String[] args)
{
A.AHelper helper = new A.AHelper();
}
static class AHelper {}
}
除了如何引用它们,在我看来,创建助手类的两种方法之间几乎没有什么区别。它可能主要归结为偏好。有人看到我想念的东西吗?我想有些人会争辩说,每个源文件最好有一个类,但是从我的角度来看,在同一源文件中有一个非公共的顶级类似乎更干净,更有条理。
问题答案:
在这两个示例中,每个源文件都没有一个类。但通常,您使用静态嵌套类来表示仅打算在其封闭类中使用它(强制将其引用为A.AHelper
)。如果您将该类移至顶层,则不清楚。
从Sun教程:
类的逻辑分组-如果一个类仅对另一个类有用,则将其嵌入该类并将两者保持在一起是合乎逻辑的。嵌套此类“帮助程序类”可使它们的程序包更加简化。