gpt4 book ai didi

Java 内部类访问和最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:44 24 4
gpt4 key购买 nike

我知道内部类可以访问外部类中的所有内容(因为它是该类的成员)但是反过来呢?

  1. 外部类是否可以访问内部类中的私有(private)变量和方法?

  2. 我看过一些文章提到内部类应该是私有(private)的,这样它们只能被外部类访问。这对内部类的可访问性有什么影响?

  3. 当涉及到您的内部类时,处理访问级别的最佳做法是什么?我假设封装越多越好,但这是否是以牺牲可访问性为代价的?

最佳答案

该主题在 Effective Java(第 2 版)第 22 项中有一些详细介绍:“Favor static member classes over nonstatic”。

一个简短的总结:

  1. 内部类不应访问外部类实例,除非需要访问,即默认情况下内部类应为 static。为了获得技术性,Effective Java 调用这些静态成员类,而不是内部类,并使用术语嵌套类来包含静态成员类和非静态版本。
  2. 外部类始终可以访问其内部类的成员,即使这些成员是私有(private)的。这样,一个内部类只能将自己暴露给它的外部类。
  3. “内部类的存在应该只是为了服务于它的外部类。”

就个人而言,只要允许内部类的构造函数是private,我就倾向于实现内部类,即当一个类只能从另一个(外部)类实例化时。任何额外的封装,例如将整个内部类设为 private,都是可取的;但是 public 内部类是完全可以接受的。 Java中有很多例子,比如AbstractMap.SimpleEntry .

关于Java 内部类访问和最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825956/

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