![](/img/trans.png)
[英]Declare a private static nested class with a public constructor Java?
[英]Why we declare the nested public static class in java, even though its being used in some other places as well?
我正在浏览遗留代码库并观察到很多地方他们在外部类中使用public static
类,而嵌套的公共静态类不只是在外部类中使用,而是在其他许多类中使用它?
背后的设计决策是什么,如果它在外面使用,那么为什么它本身不是作为一个独立的公共类创建的。
所以在我的例子中它看起来如下: -
public class OuterNestedClass {
private int a;
private List<InnerClass> innerClasses;
public static class InnerClass {
private int b;
public InnerClass(int b) {
this.b = b;
}
public void show(){
System.out.println("Value of b "+b);
}
}
}
使用innerclass
类的其他类如下所示: -
public class OutsideClass {
public static void main(String[] args) {
OuterNestedClass.InnerClass innerClass = new OuterNestedClass.InnerClass(10);
innerClass.show();
}
}
如果需要澄清,请告诉我。
主要原因是命名空间。 静态类是实用程序类,它们往往会变得非常大。 嵌套类可以让你很好地破坏你的实用程序,同时仍然保持一致。
因此,您可能拥有带有5的Utils.Password和带有15的Utils.Json,而不是使用带有20种方法的Utils
我见过的最好的例子是Retrofit.Builder是如何完成的: https : //github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Retrofit.java#L394
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.