小编典典

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

java

在我经历1000 privates 之后private,可能不需要

public class Outer {

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

是否有 任何情况下, 该下降privateinnerMethod()将使在差异 封装 (或 使用 例如,通过外)?还考虑思考
如果 建议将其删除或使其与编码风格保持一致?

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

编辑: 刚意识到 的方式肯定是错误的-至少对于Inner字段 -声明这些字段为私有字段,然后在外部类中使用它们-
因为这会在字节码中生成( “ synthetic” )访问器-
这是在至少肿。大-所以现在我更感兴趣的对这些声明的安全影响的帐户(Inner的领域,在使用的方法Outer)包专用(或公众@JBNizet在评论中说的)


阅读 213

收藏
2020-11-26

共1个答案

小编典典

答案取决于您当前使用内部类的方式。

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

上面的内容是否是您的样式,将影响以下丢弃或保留private周围方法/字段的原因。

删除的原因private是:

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

拒绝删除的原因private是:

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

鉴于上述样式,我认为反对删除的理由更强。

2020-11-26