Hil*_*ild 55 java inner-classes
如果我有一个类和一个辅助类来执行它的一些功能,那么将它作为内部类是否有意义.
public class Foo {
private FooHelper helper;
// constructor & any other logic
public void doSomeThing() {
helper.do();
}
}
public class FooHelper {
public void do() {
// code
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,将内容FooHelper作为一个内部类是否有意义?道歉,如果这听起来很愚蠢,但我对用例感到困惑.
san*_*hat 14
如果你认为FooHelper会不会在所有有用的其他类比Foo,话很有道理,使其作为private 内部类的Foo.这种设计的一个例子可以HashMap在它定义私有内部类的地方找到KeySet
否则将它作为private实例看起来很好.
Cha*_*ngh 13
来自JAVA SE Docs
为什么使用嵌套类?
它是一种逻辑分组仅在一个地方使用的类的方法:如果一个类只对另一个类有用,那么将它嵌入该类并将两者保持在一起是合乎逻辑的.嵌套这样的"帮助类"使得它们的包更加简化.
它增加了封装:考虑两个顶级类A和B,其中B需要访问A的成员,否则这些成员将被声明为私有.通过将类B隐藏在类A中,可以将A的成员声明为私有,并且B可以访问它们.另外,B本身可以隐藏在外面.
是的,使用FooHelper作为内部类是有意义的.
以下是内部类的一些用法.
因此,如果您有一些匹配上述点的要求,则可以使用内部类.最好使内部类private阻止来自其他类的访问.在您的情况下,使用内部类有助于使代码可读并在外部类中分离逻辑.