为什么我们在 java 中声明嵌套的 public static class,即使它也在其他一些地方使用?
Why we declare the nested public static class in java, even though its being used in some other places as well?
我正在查看遗留代码库并观察到他们在外部 class 和嵌套 public 静态 public static
class 中使用了很多地方 class 不仅在外部 class 中使用,而且在许多其他 class?
中使用
这背后的设计决定是什么?如果它也在外面使用,那么为什么它最初没有作为独立的 public class 创建本身。
所以在我的例子中它看起来像下面这样:-
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
的 class 如下所示:-
public class OutsideClass {
public static void main(String[] args) {
OuterNestedClass.InnerClass innerClass = new OuterNestedClass.InnerClass(10);
innerClass.show();
}
}
如果需要任何说明,请告诉我。
主要原因是命名空间。静态 类 是实用程序 类,而且它们往往会变得非常大。嵌套 类 让您可以很好地打破实用程序,同时仍将所有内容保持在一起。
因此,您可能拥有 Utils.Password 5 和 Utils.Json 15
,而不是 20 种方法
我见过的最好的例子是 Retrofit.Builder 是如何完成的:
https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Retrofit.java#L394
我正在查看遗留代码库并观察到他们在外部 class 和嵌套 public 静态 public static
class 中使用了很多地方 class 不仅在外部 class 中使用,而且在许多其他 class?
这背后的设计决定是什么?如果它也在外面使用,那么为什么它最初没有作为独立的 public class 创建本身。
所以在我的例子中它看起来像下面这样:-
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
的 class 如下所示:-
public class OutsideClass {
public static void main(String[] args) {
OuterNestedClass.InnerClass innerClass = new OuterNestedClass.InnerClass(10);
innerClass.show();
}
}
如果需要任何说明,请告诉我。
主要原因是命名空间。静态 类 是实用程序 类,而且它们往往会变得非常大。嵌套 类 让您可以很好地打破实用程序,同时仍将所有内容保持在一起。
因此,您可能拥有 Utils.Password 5 和 Utils.Json 15
,而不是 20 种方法我见过的最好的例子是 Retrofit.Builder 是如何完成的: https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Retrofit.java#L394