“可以包装本地”是什么意思? (IDEA检查)

我使用IntelliJ作为“检查代码”,其结果之一是:

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

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

它全class是这样的:

 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 ); } } } 

IDEA是指包 – 私人可见性。

一个类可以用修饰符public声明,在这种情况下,这个类对所有的类都是可见的。 如果一个类没有修饰符(默认,也被称为包私有),它只在其自己的包中可见

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

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

如果你想压制这个警告:

  1. 转到首选项 – >编辑 – >检查
  2. 转到Java – >声明冗余
  3. select“声明访问权限可以更弱”
  4. 取消选中右侧的“build议包本地可见性…”checkbox

有时候,皮棉得到错误。 以下代码可以逐一抑制这些棉绒警告中的每一个。

 @SuppressWarnings("WeakerAccess") 

您的HeartBeat类不在包com.xxxxxxxxxxx.app.xxxx之外的任何地方使用。 在这种情况下,您可以在访问中声明“protected”或“private”类更加精确。

如果你不打算在这个包之外使用这个类,你应该改变类的声明。 如果你打算在这个包的外面使用这个类,离开它,警告就会消失。

例如:

 protected class HeartBeat { ... } 

从Android应用程序背景来看,您还需要考虑有时这些警告是多余的。 所以对于debug build类,它可以是package local但对于release build它可能在包之外使用。

我已经禁用它在我的最终和@ashario答案是相当有帮助的,find如何做到这一点。