Java中包私有类的改进



根据我的经验,Java中类的包私有可见性是多余的。

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

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

  • 我们很想把功能无关的类放在同一个包中获得此福利

使用public的问题:

  • 原料药受到污染。一旦导入了库Jar,客户就会看到其他几个他不需要担心的公共类
  • 从编码标准的角度来看,没有简单的方法可以确保开发人员不会在时间紧张的情况下进行短路调用(我所说的短路调用是指绕过层的方法调用(比如从Servlet直接到DAO绕过bean/BO(

当前的解决方法:

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

问题:

  1. 想出一个新的可见性不是很有用吗修改者/替代者
  2. 沿着这些路线的东西已经在酝酿中了吗
  3. 像Spring/Gice这样的框架是否足够替代

看起来像是scala中的一个功能。存在访问修饰符的作用域。我发现这个教程很有用。

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

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

在本例中,moduleMethod在包module及其子包(如domain(内的任何地方都可用。方法domainMethod仅在domain包中可见,在外部不可见。

不幸的是,该功能与java不兼容,并且这些限制被编译为字节码,但丢失了限制,即公共

  1. 是的,我认为这会很有用。

  2. 我认为您正在寻找的是项目拼图,它最终将成为Java9。我不是这方面的专家,但你可以看看以下问题及其答案,以获得一个想法:

    • 为什么项目Jigsaw
    • Java 8模块与OSGi有何不同
  3. 我没有使用这些框架的经验。

相关内容

  • 没有找到相关文章

最新更新