当包装和私营部门在java中(没有明确的修改)?(When to package-private (

2019-09-18 02:36发布

我一直在阅读教程控制访问类成员 。 我很困惑,什么可能是好的用例使用包专用。 因为据我所知,你总是可以你的包声明中更改到任何这样一类的包声明,并充当如果这是一个公共类。 我明白,这是不是做了一件好事,但什么是阻止我?

Answer 1:

因为据我所知,你总是可以你的包声明中更改到任何这样一类的包声明并充当如果这是一个公共类

那么,对于一两件事,访问修饰符在那里帮助开发者。 总是有他们周围的方式,如通过反射的实例。

我明白,这是不是做了一件好事,但什么是阻止我?

没有多少真!

作为一个开发者,你可以然而,在密封的.jar,文件分发您的班级这基本上意味着你不能让别人在你的包。

从一个JAR文件中密封包

一个JAR文件中密封包

JAR文件内包可以任选地密封,这意味着, 在该包中定义的所有的类必须在同一个JAR文件进行存档 。 您可能要密封包装,例如,以确保您的软件类之间的版本一致性。



Answer 2:

一对夫妇的理由使用包私人类/方法:

  1. 实现类是图书馆的一部分,但不是库的API的一部分。 这可以让你仍然有模块化的代码,并作为标志的实现类不适合用作API的一部分API的用户。
  2. 制作可供测试的东西。 有时(特别是与传统的代码时),你需要做的类或成员更明显,让您可以更轻松地单元测试。 一个例子可能是测试一个类与执行要在您的测试无操作版本覆盖一个资源密集型操作的方法。 另一个例子是,仅得到在一个地方使用的类:它并不想成为整个应用程序可见的,但它需要进行单元测试。

在使用包priviate可见这两种情况下,有助于使你的代码更容易使用(使用人有它的类/成员的用途范围的一个更好的主意),同时让您仍然有模块化的代码。



Answer 3:

关于“什么是阻止我”:

Java安全机制阻止你,有可能。 如果 “目标”包装是密封的,签约,那么Java将不允许比原来的其他任何来源在包装声明类。



文章来源: When to package-private (no explicit modifier) in java?