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

El método java.lang.reflect .Method.getDeclaredAnnotations() de la clase Method devuelve las anotaciones declaradas solo en el método e ignora las anotaciones heredadas por método. Si no hay anotaciones declaradas directamente en el método, la array de anotaciones devuelta está vacía. La modificación de la array devuelta no tendrá efecto en las arrays devueltas a otras personas que llaman. Todas las arrays de anotaciones devueltas son independientes entre sí cuando las llama la persona que llama diferente.

Sintaxis:

public Annotation[] getDeclaredAnnotations()

Valor devuelto: este método devuelve una array de anotaciones directamente presentes en este elemento

El siguiente programa ilustra el método getDeclaredAnnotations() de la clase Method:

Programa 1: este programa imprime las anotaciones declaradas solo en el método e ignora las anotaciones heredadas por método usando el método getDeclaredAnnotations() en el objeto Método.

// Program Demonstrate getDeclaredAnnotations()
// method of Method Class.
  
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
import java.lang.annotation.Annotation;
  
// create a custom Annotation
@Retention(RetentionPolicy.RUNTIME)
@interface customAnnotation {
  
    // 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
    @customAnnotation(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 an array of Annotations
            Annotation[] annotation = method.getDeclaredAnnotations();
  
            // get annotation from the array of annotation
            // and print the details
            for (Annotation a : annotation) {
  
                customAnnotation self = (customAnnotation)a;
                // Print annotation attribute
                System.out.println("Annotation details");
                System.out.println("key: " + self.key());
                System.out.println("value: " + self.value());
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
  
    // create main method
    public static void main(String args[])
    {
        getCustomAnnotation();
    }
}
Producción:

Annotation details
key: AvengersLeader
value: CaptainAmerica

Programa 2: este programa imprime las anotaciones declaradas solo en el método e ignora las anotaciones heredadas por método usando el método getDeclaredAnnotations() en el objeto Método de otra clase.

En este programa hay dos clases diferentes. Una clase contiene un método con alguna anotación y otra clase contiene el método principal. En el método principal, se crea el objeto del método para el método de otra clase que contiene la anotación. Después de crear un objeto de método utilizando el método getDeclaredAnnotations(), se recopilan las anotaciones declaradas solo en el método y, después de recopilar la anotación, el programa de información imprime el resultado.

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

key: getField
value: getting field attribute

Referencia: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#getDeclaredAnnotations–

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 *