enrique-j
9/4/2018 - 8:23 PM

Anotaciones

El caracter at ( @) indica al compilador que lo que sigue es una anotación. En el siguiente ejemplo, el nombre de la anotación es Override:

La @Override anotación @Override informa al compilador que el elemento debe anular un elemento declarado en una superclase. Los métodos de anulación se discutirán en Interfaces y Herencia .

La @SuppressWarnings anotación @SuppressWarnings le dice al compilador que suprima advertencias específicas que de lo contrario generaría. En el siguiente ejemplo, se usa un método obsoleto, y el compilador generalmente genera una advertencia. En este caso, sin embargo, la anotación hace que se suprima la advertencia.

   // usar un método obsoleto y decirle al  
   // compilador que no genere una advertencia 
   @SuppressWarnings("deprecation")
    void useDeprecatedMethod() {
        // deprecation warning
        // - suppressed
        objectOne.deprecatedMethod();
    }
    
    ```
    
# La @SafeVarargs 

anotación @SafeVarargs , cuando se aplica a un método o constructor, afirma que el código no realiza 
operaciones potencialmente inseguras en su varargsparámetro. Cuando se utiliza este tipo de anotación, 
varargsse suprimen las advertencias no verificadas relacionadas con el uso.

@ La @FunctionalInterface 

anotación @FunctionalInterface , introducida en Java SE 8, indica que la declaración de tipo está destinada
a ser una interfaz funcional, tal como se define en la Especificación del lenguaje Java.


# crear anotacion 

import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MultipleInvocation {

int timesToInvoke() default 1;

}

@Target – Especifica el tipo de elemento al que se va a asociar la anotación.

ElementType.TYPE – se puede aplicar a cualquier elemento de la clase.

ElementType.FIELD – se puede aplicar a un miebro de la clase.

ElementType.METHOD – se puede aplicar a un método

ElementType.PARAMETER – se puede aplicar a parámetros de un método.

ElementType.CONSTRUCTOR – se puede aplicar a constructores

ElementType.LOCAL_VARIABLE – se puede aplicar a variables locales

ElementType.ANNOTATION_TYPE – indica que el tipo declarado en sí es un tipo de anotación.

@Retention – Especifica el nivel de retención de la anotación (cuándo se puede acceder a ella).

RetentionPolicy.SOURCE — Retenida sólo a nivel de código; ignorada por el compilador.

RetentionPolicy.CLASS — Retenida en tiempo de compilación, pero ignorada en tiempo de ejcución.

RetentionPolicy.RUNTIME — Retenida en tiempo de ejecución, sólo se puede acceder a ella en este tiempo.

@Documented – Hará que la anotación se mencione en el javadoc.

@Inherited – Indica que la anotación será heredada automáticamente.