gpt4 book ai didi

java - 是否需要将私有(private)嵌套类的内部声明为私有(private)?

转载 作者:行者123 更新时间:2023-11-30 06:23:49 28 4
gpt4 key购买 nike

private 中的 1000 秒 private 之后,我想到可能不需要它

public class Outer {

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

是否有任何情况innerMethod() 中删除 private 会对封装产生影响(或使用,例如 Outer)?想想也反射(reflection)
如果不是,建议放弃它还是保持它的编码风格?

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

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

最佳答案

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

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

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

删除 private 的原因是:

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

反对放弃 private 的原因是:

  • 将内部类的方法设为私有(private)作为文档:外部类不应该使用这些方法
  • 如果保留 private,则可以更轻松地将内部类提升到其自己的文件中
  • 如果去掉private,则有public内部类和private内部类两种样式:更多供程序员思考
  • 如果删除private 并将内部类设置为public,那么突然之间所有有权访问外部文件的人都可以访问内部类的私有(private)数据

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

关于java - 是否需要将私有(private)嵌套类的内部声明为私有(private)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com