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

经过1000多年的private private ,我发现它可能不需要

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

是否有任何情况innerMethod()中删除private会在封装中产生差异(或者由Outer 使用 )? 想想也反思
如果不是 ,建议放弃它或保持它的编码风格吗?

我会说不,然后放弃但不确定。

编辑:刚才意识到这样做的方式肯定是错的 – 至少对于Inner字段 – 将这些字段声明为私有然后在外部类中使用它们 – 因为这会在字节码中生成( “合成” )访问器 – 这是至少膨胀。 太棒了 – 所以现在我更感兴趣的是有一个关于声明那些( Inner字段, Outer使用的方法)包私有(或公共@JBNizet在评论中说)的安全含义的帐户

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

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

以上是否是您的风格将影响以下原因:删除或保持方法/字段的private

private的原因是:

  • 外部类可以访问私有成员和内部类的方法,这意味着这些字段/方法并未真正封装
  • 少打字

反对private的原因是:

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

鉴于上述风格,我认为反对下跌的理由更强。