gpt4 book ai didi

java - 为什么类中有公共(public)静态类

转载 作者:太空狗 更新时间:2023-10-29 22:51:11 24 4
gpt4 key购买 nike

我正在检查一些代码,我看到了这个:

public class A {
public A(SomeObject obj) {
//Do something
}
//Some stuff
public static class B {
//Some other stuff
}
}

我想知道,既然连内部类都是 public 为什么要将它作为嵌套而不是单独的类?另外,我可以在这里这样做吗:new A.B(SomeObject)?我觉得这违背了静态类的目的,但我也看到了这个实现,所以很想知道。

最佳答案

I was wondering since even the inner class is public why have it as nested and not a separate class?

这真的要问谁写了这个类。它可以允许外部类充当“迷你命名空间”——如果嵌套类在外部类的上下文中有用,这似乎是合理的。它表明两个类之间有意紧密耦合。我最常在构建器模式的上下文中看到这一点:

Foo foo = new Foo.Builder().setBar(10).build();

对我来说,将 Foo.Builder 嵌套在 Foo 中而不是作为可能称为 FooBuilder 的对等类对我来说很有意义.

请注意,与仅不相关的类相比,它还提供了一些可见性差异。

Also, can I do this here: new A.B(SomeObject) ?

不,因为 B 没有带有 SomeObject 参数的构造函数 - 只有 A 有(在您给出的示例中).

I feel this defeats the purpose of a static class

您应该尝试弄清楚确切您认为静态类的目的是什么,以及它以何种方式违背了该目的。目前,该声明过于模糊,无法进行现实讨论。

关于java - 为什么类中有公共(public)静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com