He utilizado IntelliJ para «Inspeccionar el Código», y uno de sus resultados es:

  Problema sinopsis      Puede ser el paquete de local (en la línea 18(public class HeartBeat))

¿Qué significa, ¿cómo puedo solucionarlo?

que toda la clase es como este:

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 );
        }
    }
}
  • Es en el código de Java?
  • Sí, para el código Java.
  • Supongo que tiene algo delcared como público que nunca se utiliza fuera de la caja?
  • Yo te sugiero que escribas tu línea 18 y un esqueleto de código para el resto de su clase.
  • qué significa esta clase no puede ser «público», en lugar «protegido»?
InformationsquelleAutor Jerry Zhang | 2015-06-06

5 Comentarios

  1. 82

    IDEA se refiere a paquete-privada visibilidad.

    Una clase puede ser declarado con el modificador public, en el que caso de que clase es visible para todas las clases en todas partes. Si una clase no tiene ningún modificador (el predeterminado, también conocido como paquete-privado), es visible sólo dentro de su propio paquete de

    Para obtener más información, consulte El control de Acceso a Miembros de una Clase.

    Se puede resolver el problema mediante la eliminación de public palabra clave de la clase (si la clase no es la intención de ser utilizados fuera del paquete), o mediante el uso de la clase de un paquete diferente.

  2. 74

    Si quieres suprimir esta advertencia:

    1. Ir a Preferencias -> Editor -> Inspecciones
    2. Ir a Java -> Declaración de redundancia
    3. Seleccione «Declaración de acceso puede ser más débil»
    4. Deshabilite la opción de «Sugerir paquete de visibilidad local…» casillas de verificación en la
      derecho

    EDIT: en la última IDEA de liberar el paso 4, esto parece haber cambiado a «Sugerir paquete-privada a nivel de visibilidad …» e incluye varias opciones para las diferentes condiciones de

    • Esta es la respuesta práctica.
    • Normalmente es bastante fácil ejecutar un Análisis / Inspeccionar el Código de operación en el módulo, para averiguar que la Pelusa de advertencia para desactivar. Este uno no se muestran en el informe (como de 2.2 RC) – y así era difícil de encontrar en la interminable lista de opciones de Inspección.
    • Siempre puedes activar las advertencias de baja donde aparecen: (Cursor de advertencia) -> alt enter -> «advertencia nombre» -> deshabilitar la inspección. Esta es bastante inútil en mi humilde opinión, por lo que siempre se ha desactivado.
  3. 23

    Cada uno de estos pelusa advertencias puede ser suprimida, caso por caso, de acuerdo con el código siguiente.

    @SuppressWarnings("WeakerAccess")
    • Esto también es potencialmente una respuesta correcta si usted está proporcionando métodos que van a utilizarse externamente para su proyecto (por ejemplo, estás escribiendo código para un marco como yo), pero no quiero perder la pelusa advertencias para todo lo demás, al desactivar en la configuración. Tenemos las pruebas en torno a estos métodos, sino porque están en el mismo paquete, la desfibradora nos está diciendo a reducir el método de público predeterminado.
    • Este debe marcar la respuesta correcta. Cuando usted está tratando con una clase de utilidad, este debería ser suprimida. Sin embargo, en las clases regulares, usted definitivamente quiere que esto se presente como se aplica buenas prácticas de codificación.
  4. 1

    Los Latidos de su corazón de clase no se utiliza en cualquier lugar fuera del paquete com.xxxxxxxxxxx.app.xxxx. En este caso, puede declarar la clase de «protección» o «privado» para ser más precisos en su acceso.

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

    E. g.:

    protected class HeartBeat {
        ...
    }
    • En ese caso puede declarar private?
    • Declarar la clase ‘privado’ le impide ser visto por otras clases en el mismo paquete. Una clase que se declara ‘privado’ sólo puede ser visto por la clase en la que se declaró. Más a menudo se utiliza para las clases internas. Lo más probable es que el OP quiere ‘protegido’.juego
    • Yo sé que. Me pregunto por qué usted ha mencionado private, porque está claro que no se puede utilizar aquí. (repost debido a problemas de gramática)
    • no hay nada en su post que me dice cómo su clase está siendo utilizado. Para mí, parecía una pregunta introductoria de un posible nuevo programador, así que quiero ser exhaustivo. Nota mi ejemplo muestra ‘protegidos’, ya que es el más probable de la aplicación. Tu pregunta original fue un gran seguimiento porque permitía incluso más explicación.
    • Idea 16 EAP las marcas de clase (no interior) como Acceso puede ser packageLocal, pero cuando yo lo declaro como protected es un error, debido a que es No se permite aquí?! Creo, uno puede deshabilitar esta inspección en la configuración, debido a su temprano estado de acceso…
    • La inspección no es buggy, esta respuesta es incorrecta. El paquete de acceso local se logra mediante el uso de ningún modificador, el protected modificador especifica un diferente modo de acceso.
    • Ver mi comentario anterior: el paquete de acceso local es diferente de acceso protegido. Por favor, cambie su respuesta para que no use el modificador lugar de la protected modificador.

  5. 0

    Provenientes de la aplicación de Android de fondo, también es necesario considerar que a veces esas advertencias son redundantes. Así que para debug build clases, puede ser package local pero para release build podría ser utilizado fuera del paquete.

    He desactivado en mi final y @ashario respuesta fue muy útil en la búsqueda de cómo hacerlo.

Dejar respuesta

Please enter your comment!
Please enter your name here