3

我正在浏览遗留代码库并观察到他们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();
    }
}

让我知道是否需要任何澄清。

4

1 回答 1

3

主要原因是命名空间。静态类是实用类,它们往往会变得非常大。嵌套类可以让你很好地打破你的实用程序,同时仍然保持一切在一起。

因此,您可能拥有 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

于 2017-06-25T05:16:06.660 回答