如何在IntelliJ中禁用“ Access可以是程序包私有”消息?


79

在开发API时,Java类中的警告消息“ Access可以是package-package”可能非常令人讨厌。

我已经花了一些时间进行设置,以找到一种禁用此消息的方法,但是没有任何发现。任何想法如何禁用该消息?


6
我的告诉我一个方法可以是包私有的,但是当我这样做时,代码中被调用的其他地方将无法工作(正如您所期望的那样),所以为什么它告诉我可以打包-私人的?如果不是在其他地方使用它,那就不可能了。这里的IDE并不是很有帮助的建议。
Marc Fearby

Answers:


54

检查规则是“声明访问权限可能较弱”,并且有两个选项可以禁用“建议软件包专用可见性级别...”。


67

转到Settings → Editor → Inspections然后Java → Declaration redundancy → Declaration access can be weaker统治。
在这里,您可以完全禁用它,也可以在右窗格中选择建议选项:

在此处输入图片说明


62

要逐个禁用,请使用

@SuppressWarnings("WeakerAccess")

6
这是最好的答案。通过这样做,您实际上可以记录您的意图,而不是让IDE全面覆盖您的所有内容
Rath

3
我已经说过,宣布一种方法已经公开记录了您的意图。但是我明白了。如果您说两次,他们就会开始相信您是真的。
迈克尔·凯

1
实际上,将所有内容设为私有是一种古老的反模式。TDD用户将比任何人都更了解这一点。从本质上讲,除非您正在编写用于分发的代码,并且需要保护内部结构免受用户的侵害,否则一切都是私有的,这会使测试和重构变得更加困难。考虑到这一点,Mayne使其扩展为IDE并不是一个坏主意。
Brill Pappin

即使这样,我也很确定您可以配置一些混淆器来为您更改访问权限。
Earthcomputer

@BrillPappin您能从任何资料中获悉有关将所有内容保持在尽可能弱的访问权限(不是“将所有内容设为私有”,我确信没有人提倡过)的想法是反模式吗?并使重构更加困难吗?在我看来,将所有内容公开都将逐步将代码变成一碗意大利面条,而这一切都取决于一切。
SantiBailors,

8

将光标移到public,按Alt+Enter并选择以下选项之一:
在此处输入图片说明


2
有趣的是,在选择“设为'package-private'”时,我没有“禁用检查”选项。(可能我已经禁用了另一设置,所以我看不到该选项。)我确定您的答案有效。谢谢。mboss的解决方案帮了我大忙。
Thomas Zuberbuehler

为我工作:-)
mrek '17

3
这是否会禁用所有“声明访问权限可能较弱”的建议,而不仅是那些建议使用包私有的建议?
乔·怀特

4

到目前为止尚未提及的另一种解决方案:如果您有一个声明为public的方法,并且IDE告诉您在包外部没有对该方法的引用,那么也许您需要添加一个从外部调用该方法的测试用例。包装。换句话说,将警告视为表示没有公共方法测试用例。


由于测试类与被测试类通常位于同一包中,因此这实际上并不会改变任何内容。
Stefan D.19年

1
@Stefan:通常,单元测试位于同一程序包中,但是公共API应该在集成或验收测试中进行测试,并且应该像真正的客户端那样使用公共API。我认为是从外面。
jazz64
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.