什么"可以打包本地"是什么意思?(IDEA检查)

Jer*_*ang 51 java intellij-idea inspection

我使用IntelliJ作为"Inspect Code",其结果之一是:

  问题简介可以打包当地(第18行(public class HeartBeat))

这是什么意思,我该如何解决?

整个班级是这样的:

package com.xxxxxxxxxxx.app.xxxx;

public class HeartBeat
{
    private static final Logger LOG = LoggerFactory.getLogger( HeartBeat.class );
    private final File heartBeatFile;


    public HeartBeat( File heartBeatFile )
    {
        this.heartBeatFile = heartBeatFile;
    }


    public void beat()
    {
        try
        {
            FileUtils.writeStringToFile( heartBeatFile, String.valueOf( System.currentTimeMillis() ) );
        }
        catch( IOException e )
        {
            LOG.error( "Error while writing heart beat log", e );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*ich 82

IDEA指的是包私有可见性.

可以使用修饰符声明类public,在这种情况下,该类对于所有类都可见.如果类没有修饰符(默认值,也称为包私有),则只能在其自己的包中显示

有关更多信息,请参阅控制对类成员的访问.

您可以通过public从类中删除关键字来解决问题(如果该类不打算在包外使用),或者使用来自其他包的类.


ash*_*rio 74

如果要取消此警告:

  1. 转到首选项 - >编辑器 - >检查
  2. 转到Java - >声明冗余
  3. 选择"声明访问权限可能更弱"
  4. 取消选中右侧的"建议包本地可见性..."复选框

编辑:在最新的IDEA发布步骤4中,这看起来已经改为"为...建议包 - 私有可见性级别",并包括针对各种条件的几个选项

  • 这是实际的答案. (8认同)

see*_*ess 23

可以使用以下代码逐个抑制这些lint警告中的每一个.

@SuppressWarnings("WeakerAccess")
Run Code Online (Sandbox Code Playgroud)

  • 如果您提供将在项目外部使用的方法(例如,您正在为像我这样的框架编写代码)但是不希望丢失其他所有内容的lint警告,这也是一个可能正确的答案.在设置中将其关闭.我们确实围绕这些方法进行了测试,但由于它们位于同一个包中,因此linter告诉我们将方法从公共方法减少到默认方法. (3认同)
  • 这应该标记为正确的答案.当您处理实用程序类时,应该禁止它.但是,在常规课程中,您肯定希望它存在,因为它强制执行良好的编码实践. (2认同)