java intellij-idea code-review inspection

java - ¿Qué significa "Puede ser paquete local"?(Inspección de IDEA)



intellij-idea code-review (5)

Usé IntelliJ para "Inspeccionar código", y uno de sus resultados es:

Sinopsis del problema Puede ser un paquete local (en la línea 18 (public class HeartBeat) )

¿Qué significa, cómo puedo solucionarlo?

toda la clase es así:

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


Cada una de estas advertencias de pelusa puede suprimirse caso por caso con el siguiente código.

@SuppressWarnings("WeakerAccess")


IDEA se refiere a la visibilidad del paquete privado .

Se puede declarar una clase con el modificador public , en cuyo caso esa clase es visible para todas las clases en todas partes. Si una clase no tiene un modificador (el valor predeterminado, también conocido como paquete privado), solo es visible dentro de su propio paquete

Para obtener más información, consulte Control de acceso a miembros de una clase .

Puede resolver el problema eliminando public palabra clave public de la clase (si la clase no está destinada a usarse fuera del paquete) o utilizando la clase de un paquete diferente.


Si desea suprimir esta advertencia:

  1. Vaya a Preferencias -> Editor -> Inspecciones
  2. Vaya a Java -> Declaración de redundancia
  3. Seleccione "El acceso a la declaración puede ser más débil"
  4. Desactive las casillas de verificación "Sugerir visibilidad local del paquete ..." a la derecha

EDITAR: en el último paso 4 del lanzamiento de IDEA, parece haber cambiado a "Sugerir nivel de visibilidad privada del paquete para ..." e incluye varias opciones para diversas condiciones


Su clase HeartBeat no se usa en ninguna parte fuera del paquete com.xxxxxxxxxxx.app.xxxx. En este caso, puede declarar la clase ''protegida'' o ''privada'' para que sea más precisa en su acceso.

Si no tiene la intención de utilizar esta clase fuera de este paquete, debe cambiar la declaración de clase. Si tiene la intención de utilizar esta clase fuera de este paquete, déjelo y la advertencia desaparecerá.

P.ej:

protected class HeartBeat { ... }


Viniendo del fondo de la aplicación de Android, también debe tener en cuenta que a veces esas advertencias son redundantes. Por lo tanto, para las clases de debug build , puede ser un package local pero para la release build puede usarse fuera del paquete.

Lo he desactivado por mi parte y la respuesta de @ashario fue bastante útil para encontrar cómo hacerlo.