web-dev-qa-db-fra.com

Que signifie "Peut être un paquet local"? (Inspection IDEA)

J'ai utilisé IntelliJ pour "Inspect Code" et l'un de ses résultats est:

Résumé du problème Peut être package local (à la ligne 18(public class HeartBeat))

Qu'est-ce que cela signifie, comment puis-je résoudre ce problème?

toute la classe est comme ça:

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 );
        }
    }
}
51
Jerry Zhang

IDEA fait référence à la visibilité du paquet privé .

Une classe peut être déclarée avec le modificateur public, auquel cas cette classe est visible par toutes les classes du monde entier. Si une classe n'a pas de modificateur (la valeur par défaut, également appelée package-private), elle n'est visible que dans son propre package.

Pour plus d'informations, voir Contrôle de l'accès aux membres d'une classe .

Vous pouvez résoudre le problème en supprimant le mot clé public de la classe (si la classe n'est pas destinée à être utilisée en dehors du package) ou en utilisant la classe d'un autre package.

82
Andrej Herich

Si vous souhaitez supprimer cet avertissement:

  1. Allez dans Préférences -> Editeur -> Inspections
  2. Allez à Java -> Redondance des déclarations
  3. Sélectionnez "L'accès à la déclaration peut être plus faible"
  4. Décochez les cases "Suggérer une visibilité locale du paquet ..." à droite.

EDIT: dans la dernière IDEA édition étape 4, cela semble avoir changé pour "Suggérer le niveau de visibilité paquet-privé pour ..." et inclut plusieurs options pour diverses conditions

74
ashario

Chacun de ces avertissements contre les peluches peut être supprimé au cas par cas avec le code suivant.

@SuppressWarnings("WeakerAccess")
23
seekingStillness

Votre classe HeartBeat n'est utilisée nulle part en dehors du package com.xxxxxxxxxxx.app.xxxx. Dans ce cas, vous pouvez déclarer la classe "protégée" ou "privée" plus précise dans votre accès.

Si vous n'avez pas l'intention d'utiliser cette classe en dehors de ce package, vous devez modifier la déclaration de la classe. Si vous avez l'intention d'utiliser cette classe en dehors de ce package, laissez-la et l'avertissement disparaîtra.

Par exemple.:

protected class HeartBeat {
    ...
}
1
devonlazarus

En provenance de l'arrière-plan de l'application Android, vous devez également tenir compte du fait que parfois ces avertissements sont redondants. Donc, pour debug build classes, cela peut être package local mais pour release build il peut être utilisé en dehors du paquet.

Je l'ai désactivé de mon côté et @ashario answer m'a été d'une grande aide pour trouver comment le faire.

0
Wahib Ul Haq