noM*_*MAD 15 java nested-class
我正在浏览一些代码,我看到了这个:
public class A {
public A(SomeObject obj) {
//Do something
}
//Some stuff
public static class B {
//Some other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道,因为即使内部类是public为什么它作为嵌套而不是一个单独的类?另外,我可以在这里这样做new A.B(SomeObject)吗?我觉得这会破坏静态类的目的,但我也看到了这个实现,所以想知道.
Jon*_*eet 18
我想知道,即使内部类是公共的,为什么它作为嵌套而不是一个单独的类?
无论是谁写了这门课,这真的是一个问题.它可以允许外部类充当"迷你命名空间" - 如果嵌套类仅在外部类的上下文中有用,那么它似乎是合理的.它表明两个阶级之间故意紧密耦合.我经常在构建器模式的上下文中看到这个:
Foo foo = new Foo.Builder().setBar(10).build();
Run Code Online (Sandbox Code Playgroud)
在这里我有意义Foo.Builder嵌套在内部Foo而不是作为一个可能被调用的对等类FooBuilder.
请注意,与仅不相关的类相比,它还提供了一些可见性差异.
另外,我可以在这里这样做
new A.B(SomeObject)吗?
不,因为B没有带SomeObject参数的构造函数 - 只有A(在你给出的例子中).
我觉得这会破坏静态类的目的
你应该尝试找出究竟是什么,你认为一个静态类的目的是,用什么方式这违背这一目的.目前,过于含糊不清的声明要进行实际讨论.
你会有这样的内部类
private外部类或其他嵌套类的成员.Lock或者Sync你不希望与同一个包中的类使用的其他同名类混合使用.我可以在这里这样做:新的AB(SomeObject)?
您可以.
我觉得这会破坏静态类的目的
它需要习惯,但一旦你开始你可能有麻烦不能将整个程序变成一个file.java;)
| 归档时间: |
|
| 查看次数: |
13386 次 |
| 最近记录: |