编程语言
首页 > 编程语言> > 为什么我们在java中声明嵌套的公共静态类,即使它也被用在其他一些地方呢?

为什么我们在java中声明嵌套的公共静态类,即使它也被用在其他一些地方呢?

作者:互联网

我正在浏览遗留代码库并观察到很多地方他们在外部类中使用公共静态类,而嵌套的公共静态类不只是在外部类中使用,而是在其他许多类中使用它?

背后的设计决策是什么,如果它在外面使用,那么为什么它本身不是作为一个独立的公共类创建的.

所以在我的例子中它看起来如下: –

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);
        }
    }
}

使用内部类的其他类如下所示: –

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

标签:java,static-class
来源: https://codeday.me/bug/20190627/1306963.html