Clase de método | método getAnnotation() en Java

El método java.lang.reflect .Method.getAnnotation(Class< T > annotationClass) de la clase Method devuelve la anotación de los objetos Method para el tipo especificado pasado como parámetro si dicha anotación está presente, de lo contrario, nulo. Este es un método importante para obtener anotaciones para el objeto Método.

Sintaxis:

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)

Parámetro: este método toma un parámetro obligatorio annotationClass que es el objeto Class del tipo de anotación.

Valor devuelto: este método devuelve la anotación del método para el tipo de anotación especificado si está presente en este elemento, de lo contrario, es nulo.

Excepción: este método lanza NullPointerException si la clase de anotación dada es nula

El siguiente programa ilustra el método getAnnotation(Class annotationClass) de la clase Method:

Ejemplo 1: este programa imprime la anotación del método para el tipo de anotación especificado dado como parámetro para getAnnotation() de Method Object que representa el método getCustomAnnotation() de la clase GFG.

En este ejemplo, se usa una sola clase y la clase contiene ambos métodos, que son el método principal y el método con anotación.

// Program Demonstrate getAnnotation(Class<T> annotationClass) method
// of Method Class.
  
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
  
// create a custom Annotation
@Retention(RetentionPolicy.RUNTIME)
@interface Annotation {
  
    // This annotation has two attributes.
    public String key();
  
    public String value();
}
  
// create the Main Class
public class GFG {
  
    // call Annotation for method and pass values for annotation
    @Annotation(key = "AvengersLeader", value = "CaptainAmerica")
    public static void getCustomAnnotation()
    {
  
        try {
  
            // create class object for class name GFG
            Class c = GFG.class;
  
            // get method name getCustomAnnotation as Method object
            Method[] methods = c.getMethods();
            Method method = null;
            for (Method m : methods) {
                if (m.getName().equals("getCustomAnnotation"))
                    method = m;
            }
  
            // get Annotation of Method object m by passing
            // Annotation class object as parameter
            Annotation anno = method.getAnnotation(Annotation.class);
  
            // print Annotation Details
            System.out.println("Annotation for Method Object"
                               + " having name: " + method.getName());
            System.out.println("Key Attribute of Annotation: "
                               + anno.key());
            System.out.println("Value Attribute of Annotation: "
                               + anno.value());
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
  
    // create main method
    public static void main(String args[])
    {
        getCustomAnnotation();
    }
}
Producción:

Annotation for Method Object having name: getCustomAnnotation
Key Attribute of Annotation: AvengersLeader
Value Attribute of Annotation: CaptainAmerica

Ejemplo 2: Este programa imprime la anotación del método para el tipo de anotación especificado dado como parámetro para getAnnotation() de Method Object que representa el método getCustomAnnotation() de la clase GFG.

En este ejemplo, se utilizan dos clases. Una clase contiene el método principal que crea el objeto del método y aplica el método getAnnotation() y otra clase contiene el método con alguna anotación.

// Program Demonstrate getAnnotation(Class<T> annotationClass) method
// of Method Class.
  
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // get array Method objects
        Method[] methods = GFGDemoClass.class.getMethods();
  
        // get Annotation
        SelfCreatedAnnotation annotation = methods[0]
                                               .getAnnotation(
                                                   SelfCreatedAnnotation
                                                       .class);
  
        // Print annotation attribute
        System.out.println("key: " + annotation.key());
        System.out.println("value: " + annotation.value());
    }
}
  
// Another class on which we want to apply the annotation
class GFGDemoClass {
    private String field;
  
    // create annotation
    @SelfCreatedAnnotation(key = "getField",
                           value = "getting field attribute")
    public String
    getField()
    {
        return field;
    }
}
  
// create custom annotation having two values
@Retention(RetentionPolicy.RUNTIME)
@interface SelfCreatedAnnotation {
    public String key();
    public String value();
}
Producción:

key: getField
value: getting field attribute

Referencia: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#getAnnotation-java.lang.Class-

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *