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

Mr_*_*s_D 2 java security reflection encapsulation coding-style

经过1000多private秒后private,我发现可能不需要它

public class Outer {

    private static class Inner { // you may drop static
        private void innerMethod() {}
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有任何情况下,该下降privateinnerMethod()将使在差异封装(或使用,由外例如)?想想反思
如果不是,建议放弃它或保持它与编码风格?

我说没有下降,但不知道真的.

编辑:刚刚意识到,这样做到这一点肯定是错误的-至少对于Inner领域 -宣称这些领域的私人然后在外部类中使用它们-因为这会产生('合成’)访问的字节码-这是在最臃肿.太棒了 - 所以现在我更感兴趣的是有一个关于声明这些(Inner的字段,使用的方法Outer)包私有(或公共@JBNizet在评论中说)的安全含义的帐户

kup*_*fic 5

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

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

以上是否是您的风格将影响以下放弃或保留private周围方法/字段的原因.

丢弃的原因private是:

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

反对的原因private是:

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

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