Java &引用;访问权限可以是私有的”;IntelliJ IDEA中公共setter/mutator方法的警告消息

Java &引用;访问权限可以是私有的”;IntelliJ IDEA中公共setter/mutator方法的警告消息,java,intellij-idea,ide,Java,Intellij Idea,Ide,我有一个带有私有字段和公共setter方法的公共类来设置这些字段。为什么IntelliJ IDEA警告我说这些setter方法的“访问可以是私有的” 这意味着它们不在课堂外使用,也不需要公开 限制对方法的访问可以使您的界面保持较小,并减少bug潜入程序的可能性。很简单:因为IntelliJ没有发现这些方法的任何用法,需要它们在您的项目中公开 换句话说:IDE并不“知道”您是故意将setter公开的。它只是想:对于你现在正在做的事情,你不必那么做 在编写“真正”的公共API时(可能供以后依赖于您的

我有一个带有私有字段和公共setter方法的公共类来设置这些字段。为什么IntelliJ IDEA警告我说这些setter方法的“访问可以是私有的”


这意味着它们不在课堂外使用,也不需要公开


限制对方法的访问可以使您的界面保持较小,并减少bug潜入程序的可能性。

很简单:因为IntelliJ没有发现这些方法的任何用法,需要它们在您的项目中公开

换句话说:IDE并不“知道”您是故意将setter
公开的。它只是想:对于你现在正在做的事情,你不必那么做

在编写“真正”的公共API时(可能供以后依赖于您的类的第三方使用),可以安全地忽略此信息。因此,您可以直接进入并禁用该警告,例如,请参见


除此之外:要明白,在可能的情况下,你应该避免公开设定者。除非您有一个“数据bean”类,否则为每个字段和任何字段设置setter/getter实际上是不好的。您避免外部人员检查内部状态(使用getter),并且非常希望防止外部人员覆盖内部状态(使用setter)。

IntelliJ IDEA足够智能,可以扫描包内的包和类引用,如果它注意到使用主要包含在某个包中,然后,它将尝试灌输遵循封装原则的一些原则,在本例中是:包私有性。
如果一个类没有修饰符(默认值,也称为包私有),则它只能在自己的包中可见(包是相关类的命名组)。

这些类在类外部使用。更新的问题。@Saikat然后IntelliJ不会这样警告。如果它们真的可以是私有的,那么您就不会“公开”使用它们。或者这是一个IntelliJ错误。我不好,只是注意到setter是在同一个类中调用的。这突出了我在更新中的观点:首先要小心使用setter;-)这是一个什么样的愚蠢解决方案?为什么没有一种方法可以在指定的字段上禁用此功能?您可以发布一些代码来演示您的意思吗?讨论中的类及其使用位置。