这多年来一直困扰着我,我想你们中的一个很好的人会知道 - 在 Eclipse 的 .classpath 文件中,classpathentry 元素的 combineaccessrules 属性实际用于什么?
我可以在 Java Build Path 配置对话框中看到它可以被操纵,但我想不出一个好的用例。如果我对设置感到困惑,或者手动修改 .classpath 文件,它似乎没有任何效果。
我希望其他人已经很好地利用了它,我可以窃取他们的想法。基本上,这是我试图抓挠的痒。
通过正确使用访问规则,您可以防止使用“内部”和/或“非 API”类和方法。当您将类或包添加为禁止或不鼓励时,当您使用指定包中的该类或类时,编译器会显示错误或警告。有关访问规则的详细介绍,您应该阅读这篇简短的文章。
对于使用组合访问规则,请想象以下情况:
您不允许在项目 A 中使用“非 api”类,因此您在这些类/包上设置了一些禁止访问规则。
在项目 B 中,您也不允许使用“非 api”,但您确实希望在使用“不稳定 api”时收到警告。在这种情况下,在项目 B 中,如果您将“组合规则”与导出的项目条目的访问规则选中,则只需设置附加的Disouraged访问规则。
访问规则是方便的小东西,但很危险。它们从项目编译器中排除源文件,但在文件系统中保持文件完整。
我从事的项目在我们的一个源文件夹中有一个引导类,但是如果我们包含整个文件夹,则项目类路径将无法编译(这是一个很长的故事,构建过程会处理这个问题)。
所以我们使用 eclipse 访问规则来排除它,它在开发过程中从不打扰我们。这意味着我们不能轻易地更改代码,但它是多年未触及的那些类之一。
从 JavaDoc 来看,Combine Access Rules 是一个真正的边缘用例。要使用它,您必须具备:
我真的不能说它有什么用,但我希望至少能回答你的“它是什么”问题:)