"Can be package local"是什么意思?(创意检查)



我在"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关键字来解决这个问题(如果类不打算在包外使用),或者通过使用其他包中的类来解决这个问题。

如果您想取消此警告:

  1. 进入首选项->编辑器->检查
  2. 转到Java ->声明冗余
  3. 选择"声明访问可以更弱"
  4. 取消对

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

每个lint警告都可以用下面的代码逐个抑制。

@SuppressWarnings("WeakerAccess")

HeartBeat类没有在包com.xxxxxxxxxxx.app.xxxx之外的任何地方使用。在这种情况下,你可以将类声明为"protected"或"private",以便在访问时更精确。

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

例如:

protected class HeartBeat {
    ...
}

来自Android应用程序后台,你还需要考虑到有时这些警告是多余的。因此,对于debug build类,它可以是package local,但对于release build,它可能在包外使用。

我已经禁用了它,@ashario的答案对找到如何做到这一点很有帮助。

相关内容

  • 没有找到相关文章

最新更新