是否需要将私有嵌套类的内部声明为私有



private中经过1000秒的private后,我突然想到可能不需要

public class Outer {
    private static class Inner { // you may drop static
        private void innerMethod() {}
    }
}

是否存在innerMethod()中删除private会对封装产生影响的任何情况(或者使用,例如Outer)?思考反思
如果不是,建议将其删除还是保留为vis编码样式?

我会说放弃,但真的不确定。

EDIT:刚刚意识到I这样做肯定是错误的-至少对于Inner字段-声明这些字段为私有字段,然后在外部类中使用它们-因为这会在字节码中生成("合成")访问器-这至少是膨胀的。太好了,所以现在我更感兴趣的是了解声明这些(Inner的字段,Outer中使用的方法)包私有(或公共,如@JBNizet在评论中所说)

的安全含义

答案取决于当前如何使用内部类。

我对内部类的理念是减轻重构的负担。我维护内部类的封装:内部类的private方法和字段不能从外部类访问,即使它们可以访问。因此,内部类的目的是将其范围缩小到仅包含类。这样,如果以后可以在其他地方重用内部类,那么将其移动到自己的文件中几乎不需要任何工作(对于非static内部类也只需要少量的工作)。

无论以上是否为您的风格,都会影响以下删除或保留方法/字段周围的private的原因。

丢弃private的原因是:

  • 外部类可以访问内部类的私有成员和方法,这意味着这些字段/方法并不是真正封装的
  • 小于类型

不放弃private的原因是:

  • 使内部类private的方法成为文档:外部类不应该使用这些方法
  • 如果保留private,则可以更容易地将内部类提升为自己的文件
  • 如果删除private,则public内部类和private内部类有两种样式:更多供程序员考虑
  • 如果private被丢弃,而内部类被设为public,那么突然间,所有有权访问外部文件的人都可以访问内部类的私有数据

鉴于上述风格,我认为反对放弃的理由更充分。

相关内容

  • 没有找到相关文章

最新更新