What does "Can be package local" mean? (IDEA Inspection)

Jerry Z. picture Jerry Z. · Jun 6, 2015 · Viewed 38.2k times · Source

I used IntelliJ for "Inspect Code", and one of its results is:

  Problem synopsis      Can be package local (at line 18(public class HeartBeat))

What does it mean, how can I fix it?

it whole class is like this:

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

Answer

Andrej Herich picture Andrej Herich · Mar 26, 2016

IDEA is referring to package-private visibility.

A class may be declared with the modifier public, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package

For more information, see Controlling Access to Members of a Class.

You can solve the problem by removing public keyword from the class (if the class is not intended to be used outside the package), or by using the class from a different package.