(JAVA): Una introducción detallada a las anotaciones y meta-anotaciones. Para entender, las encontrará al mirar el código fuente.

contenido

1. Introducción básica a las anotaciones ☺☺

Segundo, la introducción básica de Annotation☺☺

1. Tres anotaciones básicas☺

2. Ejemplo de código☺

3. El tipo de advertencia especificado de @SuppressWarnings ☺☺

4. Meta anotación ☺☺

1. Introducción básica☺

2. Anotación de retención ☺

3. Anotación de destino ☺

​​​​​​4, Anotaciones documentadas ☺

5. Anotaciones heredadas☺


1. Introducción básica a las anotaciones ☺☺

        La anotación (anotación), también conocida como metadatos (Metadata), es introducida por JDK1.5 y versiones posteriores, y se utiliza para modificar e interpretar información de datos como paquetes, clases, métodos, propiedades, constructores y variables locales. Se puede usar para crear documentación, rastrear dependencias en su código e incluso realizar comprobaciones básicas en tiempo de compilación.

        Las anotaciones existen en el código con '@nombre de anotación' De acuerdo con el número de parámetros de anotación, podemos dividir las anotaciones en tres categorías: anotaciones marcadas, anotaciones de un solo valor y anotaciones completas. Al igual que los comentarios, las anotaciones no afectan la lógica del programa, pero se pueden compilar o ejecutar como información complementaria incrustada en el código.

        Además, puede elegir en tiempo de compilación si la anotación en el código solo existe en el nivel de código fuente, o también puede aparecer en el archivo de clase, o en tiempo de ejecución (SOURCE/CLASS/RUNTIME).

        En JavaSE, las anotaciones se usan para propósitos más simples, como marcar características obsoletas, ignorar advertencias, etc. Las anotaciones tienen un papel más importante en Java EE, por ejemplo, para configurar cualquier aspecto de una aplicación, reemplazando el código engorroso y la configuración XML que quedan de las versiones anteriores de Java EE.


Segundo, la introducción básica de Annotation☺☺

1. Tres anotaciones básicas☺

@Override  : para limitar un método, es para anular el método de la clase principal , esta anotación solo se puede usar para métodos
▶  @Deprecated  : se usa para indicar que un elemento del programa ( clase , método, etc. ) está obsoleto
@SuppressWarnings  : suprime las advertencias del compilador

2. Ejemplo de código☺

①:@Anular

class Son extends Father{

    @Override
    public void play(){}

}

Darse cuenta:

        ▷ @Override indica que el método de reproducción de la subclase anula el método de reproducción de la clase principal
        ▷  Si @Override no está escrito aquí , la capa de la clase principal aún se reescribirá
        ▷ Si escribe la anotación @Override, el compilador verificará si el método realmente anula el método de la clase padre, si lo hace, la compilación pasará, y si no constituye una anulación, será un error de compilación.
        ▷@Override solo puede modificar métodos, no otras clases, paquetes, propiedades, etc.

②:@Obsoleto

@Deprecated
class A{
    @Deprecated
    public static int name = 1;

    @Deprecated
    public void play(){ }
}

Darse cuenta:

        ▷  Obsoleto no significa que no se pueda usar, simplemente no es recomendable, pero aún se puede usar

        ▷  Puede modificar métodos, clases, campos, paquetes, parámetros, etc.

        ▷  Su función es lograr compatibilidad y transición entre versiones antiguas y nuevas


③:@ Suprimir advertencias

        

@SuppressWarnings ("all")
public class word{ }

Darse cuenta:

        ▷  Acerca de SuppressWarnings El alcance de la acción depende de dónde lo coloque. Por ejemplo, @SuppressWarnings se coloca en el método principal, luego el alcance de la supresión de advertencias es principal.

        ▷  Según el código fuente de @SuppressWarnings, sus objetivos de anotación son clases, campos, funciones, parámetros de entrada de funciones, constructores y variables locales de funciones.


3. El tipo de advertencia especificado de @SuppressWarnings ☺☺

palabras clave explique
todos suprimir todas las advertencias
boxeo Suprimir advertencias relacionadas con operaciones de embalaje / desmontaje
emitir Suprimir advertencias relacionadas con trabajos de reparto
dep-ann Suprimir advertencias relacionadas con anotaciones obsoletas
deprecación Suprimir y eliminar gradualmente las advertencias relacionadas
caer a través Suprimir las advertencias relacionadas con la omisión de interrupción en la declaración del interruptor
por fin Suprimir advertencias relacionadas con no devolver finalmente bloques
ocultación Suprimir avisos relacionados con variables de área con variables ocultas
cambio incompleto Suprimir advertencias relacionadas con elementos que faltan en declaraciones de cambio (caso de enumeración)
javadoc Suprimir advertencias relacionadas con javadoc
nls Suprimir advertencias relacionadas con literales de cadena que no sean nls
nulo Suprimir advertencias relacionadas con el análisis nulo
tipos sin procesar Suprimir advertencias relacionadas con el uso de tipos sin formato
recurso Suprimir advertencias relacionadas con el uso de recursos de tipo Cerrable
restricción Suprime las advertencias relacionadas con el uso de referencias obsoletas o prohibidas
de serie Suprima las advertencias relacionadas con las clases serializables que faltan en el campo serialVersionUID
acceso estático Suprimir advertencias relacionadas con el acceso estático incorrecto
método estático Suprimir advertencias relacionadas con métodos que pueden declararse estáticos
súper Suprimir advertencias relacionadas con métodos de sustitución sin superllamadas
acceso sintético Suprimir advertencias sobre acceso no optimizado a clases internas
sincronización-anulación Suprima las advertencias de sincronización perdida debido a la permutación de métodos de sincronización
desenfrenado Suprimir advertencias relacionadas con trabajos no marcados
acceso de campo no calificado Suprimir advertencias relacionadas con el acceso de campo no calificado
no usado Suprimir advertencias relacionadas con código no utilizado y código deshabilitado

4. Meta anotación ☺☺

1. Introducción básica☺

▶ Qué son las meta-anotaciones:

        Las meta-anotaciones son anotaciones que explican las anotaciones. Los objetos que anota son las anotaciones que presentamos anteriormente, como: @Override, @Deprecated  , @SuppressWarnings       

 ▶ Cuatro tipos de meta-anotaciones:

         ▷  Retención: Especifique el alcance de la anotación, tres tipos de FUENTE, CLASE, TIEMPO DE EJECUCIÓN
         ▷  Destino: especifique dónde se pueden usar las anotaciones
         ▷  Documentado: especifica si la anotación se reflejará en javadoc
         ▷  Heredado: las subclases heredarán las anotaciones de la clase principal
▶ Notas para la anotación:
        ▷  Las anotaciones solo existen en el código fuente y no están incluidas

        en 

        el archivo de bytecode de la  clase . Existencia, se puede obtener por reflexión en tiempo de ejecución

        ▷  En primer lugar, es necesario aclarar la duración del ciclo de vida SOURCE < CLASS < RUNTIME , donde el primero puede funcionar, el segundo también debe funcionar.
                ①: En general, si necesita obtener información de anotación dinámicamente en tiempo de ejecución, solo puede usar la anotación RUNTIME;
                ②: si desea realizar algunas operaciones de preprocesamiento en tiempo de compilación, como generar algún código auxiliar (como ButterKnife), use la anotación CLASS;
                ③: Si solo realiza algunas operaciones de inspección como @Override y @SuppressWarnings, puede usar la anotación SOURCE.

2. Anotación de retención ☺

▲ Explicación:

         Solo se puede usar para modificar una definición de anotación para especificar cuánto tiempo se puede retener la anotación . @Rentention contiene una variable miembro de tipo RetentionPolicy. Al usar @Rentention , debe especificar un valor para la variable miembro de valor (hay tres valores ).

     

▲ Tres valores:

         ▷  RetentionPolicy.SOURCE: Después de que el compilador la usa, directamente descarta los comentarios de esta política.

          ▷  RetentionPolicy.CLASS: el compilador registrará la anotación en el archivo de clase . Al ejecutar un programa Java , la JVM no retendrá la anotación. Es el valor predeterminado.
          ▷  RetentionPolicy.RUNTIME:  el compilador registrará la anotación en el archivo de clase . Al ejecutar un programa Java , la JVM retendrá la anotación . El programa puede obtener la anotación a través de la reflexión.

3. Anotación de destino ☺

▲ Explicación:

        Se utiliza para decorar definiciones de anotación, especificando qué elementos del programa se pueden usar para decorar la anotación decorada. @Target también contiene una variable miembro denominada valor.


​​​​​​4, Anotaciones documentadas☺

▲ Explicación:

        @Documentado: se usa para especificar que la clase de anotación modificada por esta metaanotación se extraerá en un documento mediante la herramienta javadoc, es decir, la anotación se puede ver cuando se genera el documento.

▲  Nota:

        Las anotaciones definidas como @Documentadas deben establecer el valor de Retención en TIEMPO DE EJECUCIÓN.


5. Anotaciones heredadas☺

▲ Explicación:

        Las anotaciones modificadas por @Inherited tendrán herencia, si una clase usa una anotación modificada por @Inherited, sus subclases automáticamente tendrán la anotación

Supongo que te gusta

Origin blog.csdn.net/yzh2776680982/article/details/124356590
Recomendado
Clasificación