我在"Inspect Code"中使用了IntelliJ,其结果之一是:
问题概要可以是package local(在第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 );
}
}
}
IDEA是指package-private可见性。
一个类可以用修饰符
中可见。public
声明,在这种情况下,这个类对所有地方的类都是可见的。如果一个类没有修饰符(默认的,也称为package-private),它只在它自己的包
有关详细信息,请参见控制对类成员的访问。
您可以通过从类中删除public
关键字来解决这个问题(如果类不打算在包外使用),或者通过使用其他包中的类来解决这个问题。
如果您想取消此警告:
- 进入首选项->编辑器->检查
- 转到Java ->声明冗余
- 选择"声明访问可以更弱"
- 取消对
编辑:在最新的IDEA发布步骤4中,这看起来已经更改为"建议包的私有可见性级别为…",并包含了各种条件的几个选项
每个lint警告都可以用下面的代码逐个抑制。
@SuppressWarnings("WeakerAccess")
HeartBeat类没有在包com.xxxxxxxxxxx.app.xxxx之外的任何地方使用。在这种情况下,你可以将类声明为"protected"或"private",以便在访问时更精确。
如果你不打算在包外使用这个类,你应该修改这个类的声明。如果你打算在这个包之外使用这个类,留下它,警告就会消失。
例如:
protected class HeartBeat {
...
}
来自Android应用程序后台,你还需要考虑到有时这些警告是多余的。因此,对于debug build
类,它可以是package local
,但对于release build
,它可能在包外使用。
我已经禁用了它,@ashario的答案对找到如何做到这一点很有帮助。