何时在java中打包私有(无显式修饰符)?
我一直在读教程。我对使用包私有的好用例感到困惑。因为据我所知,您总是可以将包声明更改为此类的任何包声明,并将其作为公共类。我明白这不是一件好事,但什么阻止了我 因为据我所知,您可以随时将包声明更改为此类的任何包声明,并将其视为公共类 首先,访问修饰符是用来帮助开发人员的。他们总是有办法的,比如说 我知道这不是一件好事,但什么阻止了我? 真的不多 但是,作为一名开发人员,您可以在密封的.jar文件中分发类,这基本上意味着您不允许任何其他人进入您的包 从 在JAR文件中密封包 JAR文件中的包可以选择密封,这意味着该包中定义的所有类都必须归档在同一JAR文件中。例如,您可能希望密封一个包,以确保软件中的类之间的版本一致性 关于“什么在阻止我”:何时在java中打包私有(无显式修饰符)?,java,class-visibility,Java,Class Visibility,我一直在读教程。我对使用包私有的好用例感到困惑。因为据我所知,您总是可以将包声明更改为此类的任何包声明,并将其作为公共类。我明白这不是一件好事,但什么阻止了我 因为据我所知,您可以随时将包声明更改为此类的任何包声明,并将其视为公共类 首先,访问修饰符是用来帮助开发人员的。他们总是有办法的,比如说 我知道这不是一件好事,但什么阻止了我? 真的不多 但是,作为一名开发人员,您可以在密封的.jar文件中分发类,这基本上意味着您不允许任何其他人进入您的包 从 在JAR文件中密封包 JAR文件中的包可以选
Java安全机制可能会阻止您。如果“目标”包是密封和签名的,那么Java将不允许原始包以外的任何源声明该包中的类。使用包私有类/方法的几个原因:
在这两种情况下,使用包私有可见性有助于使您的代码更易于使用(使用它的人对类/成员的预期用途有更好的了解),同时允许您仍然使用模块化代码。在实践中,它几乎没有任何用处:几乎所有元素都是
公共的,private
或protected
.IMHO,成员的默认值应该是private。我发现packagelocal很有用,但它应该类似于packageint字段代码>因为据我所知,您可以随时将包声明更改为此类类的任何包声明,并将其视为公共类。
您可以,但实际上不会。想象一下,如果您访问第三方库,将您自己的包名更改为第三方库的包名是非常糟糕的做法,因为您侵犯了其他人的名称空间。我不知道在JAR文件中密封包。很高兴知道。我真的很喜欢你在这里概述的第一个原因,我想知道为什么我在我所使用的代码库中没有看到这么多