Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 );
        }
    }
}
like image 396
Jerry Z. Avatar asked Jun 06 '15 02:06

Jerry Z.


3 Answers

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.

like image 111
Andrej Herich Avatar answered Oct 31 '22 06:10

Andrej Herich


If you want to suppress this warning:

  1. Go to Preferences -> Editor -> Inspections
  2. Go to Java -> Declaration redundancy
  3. Select "Declaration access can be weaker"
  4. Uncheck the "Suggest package local visibility..." checkboxes on the right

EDIT: in the latest IDEA release step 4 this looks to have changed to "Suggest package-private visibility level for ..." and includes several options for various conditions

like image 75
ashario Avatar answered Oct 31 '22 04:10

ashario


Each of these lint warnings can be suppressed on a case-by-case basis with the following code.

@SuppressWarnings("WeakerAccess")
like image 23
seekingStillness Avatar answered Oct 31 '22 05:10

seekingStillness