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:
- Vaya a Preferencias -> Editor -> Inspecciones
- Vaya a Java -> Declaración de redundancia
- Seleccione "El acceso a la declaración puede ser más débil"
- 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.