繁体   English   中英

为什么我们在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM