gpt4 book ai didi

java - Java中包私有(private)类的改进

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:16 26 4
gpt4 key购买 nike

根据我的经验,Java 类的包私有(private)可见性被证明是多余的。

包私有(private)可见性似乎基于这样一个前提,即一个几乎被另一个类私有(private)使用的类很可能保存在同一个包中。通常情况并非如此。 有人在探索改进的访问修饰符/替代机制吗?

尝试使用包私有(private)可见性的问题:

  • 我们很想将功能上无关的类放在同一个包中得到这个好处

改用 public 的问题:

  • API 被污染。导入库 Jar 后,客户可以看到他无需担心的其他几个公共(public)类
  • 从编码标准的角度来看,没有简单的方法来确保短路调用不会由开发人员按时完成(我所说的短路调用是指绕过一层的方法调用(比如从 Servlet 绕过 bean/BO 直接到 DAO)

当前的解决方法:

  • 为了阻止短路调用,我们通常将应用程序的不同部分打包到多个 JAR 中,并确保每次构建的构建环境中只有相应的 JAR 可用。 (例如,在编译 swing 客户端类时,server.jar 将不可用。只有客户端类和 common.jar 可用。)

问题:

  1. 提出新的可见性不是很有用吗修改/替代?
  2. 这些方面的东西是否已经在筹备中?
  3. Spring/Guice 等框架是否足以替代?

最佳答案

看起来像是 scala 的一个特性。访问修饰符有一个范围。我找到了 this tutorial有用。

方法在某些包的范围内可以是私有(private)的

package company.module.domain

class Example {
private[module] def moduleMethod = ???
private[domain] def domainMethod = ???
}

在此示例中,moduleMethod 在包 module 及其子包(如 domain)中随处可用。方法domainMethod只在domain包内可见,在外不可见。

不幸的是,此功能与 java 不兼容,并且这些限制被编译为字节码而丢失了限制,即 to public

关于java - Java中包私有(private)类的改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995683/

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