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

java.lang.reflect .Method.getParameterAnnotations ()El método de la clase Method devuelve una array de anotaciones bidimensional, que representa las anotaciones en los parámetros del objeto Method. Si el método no contiene parámetros, se devolverá una array vacía. Si el método contiene uno o más parámetros, se devolverá una array de anotación de dos dimensiones. Una array anidada de esta array de dos dimensiones estará vacía para el parámetro sin anotaciones. En el momento de la compilación, los parámetros obligatorios y sintéticos se agregan a la array. Los parámetros obligatorios son parámetros que se declaran implícitamente en la fuente y los parámetros sintéticos son parámetros que no se declaran implícita ni explícitamente en la fuente. Los objetos de anotación devueltos por este método son serializables. La array de arrays devuelta por este método se puede modificar fácilmente. 

Sintaxis:

public Annotation[][] getParameterAnnotations()

Valor devuelto: Este método devuelve una array de Anotación bidimensional, que representa las anotaciones en los parámetros formales e implícitos del objeto Método. Los siguientes programas ilustran el método getParameterAnnotations() de la clase Method: 

Ejemplo 1: usar getParameterAnnotations() para un método específico dado como entrada. El programa contiene un nombre de método setManyValues() que contiene anotaciones de parámetros. Entonces, este programa obtendrá todas las anotaciones de parámetros que contiene el método setManyValues(). 

Java

// Java program to demonstrate how to
// apply getParameterAnnotations() method
// of Method Class.
 
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
 
public class GFG {
 
    // Main method
    public static void main(String[] args)
    {
        try {
            // create class object
            Class classobj = GFG.class;
 
            // create method object of setManyValues
            Method setManyValueObject = null;
 
            Method[] methods = classobj.getMethods();
 
            for (Method m : methods) {
                if (m.getName().equals("setManyValues"))
                    setManyValueObject = m;
            }
 
            // get Annotation of parameter
            Annotation[][] Arrayannotations = setManyValueObject
                                                  .getParameterAnnotations();
 
            System.out.println("Method Name: "
                               + setManyValueObject.getName());
 
            // print parameter annotation
            for (Annotation[] annotationRow : Arrayannotations) {
                for (Annotation annotation : annotationRow) {
                    AnnotationDemo anndemo = (AnnotationDemo)annotation;
                    System.out.println("key of annotation: "
                                       + anndemo.key());
                    System.out.println("value of annotation: "
                                       + anndemo.value());
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    // method name setManyValues
    public void
        setManyValues(@AnnotationDemo(key = "methodParameter1",
                                      value = "Some value")
                      String parameter1)
    {
        System.out.println("setManyValues");
    }
}
 
// create a custom Annotation to apply on method
@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationDemo {
 
    // This annotation has two attributes.
    public String key();
 
    public String value();
}
Producción:

Method Name: setManyValues
key of annotation: methodParameter1
value of annotation: Some value

Ejemplo 2: usar getParameterAnnotations() para métodos de la clase GFG, si el método contiene ParameterAnnotations. 

Java

// Java program to demonstrate how to
// apply getParameterAnnotations() method
// of Method Class.
 
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
 
public class GFG {
 
    // Main method
    public static void main(String[] args)
    {
        try {
            // create class object
            Class classobj = GFG.class;
 
            // create list of method objects
            Method[] methods = classobj.getMethods();
 
            for (Method m : methods) {
 
                // print details for only getValues
                // and setValue method
                // so filter list of methods
                if (m.getName().equals("getValues")
                    || m.getName().equals("setValue")) {
 
                    // get Annotations of parameter
                    Annotation[][] Arrayannotations
                        = m
                              .getParameterAnnotations();
 
                    System.out.println("Method Name: "
                                       + m.getName());
 
                    // print parameter annotation
                    printAnnotation(Arrayannotations);
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    // method name setValue with
    // no annotations at parameter
    public void setValue()
    {
        System.out.println("setValue");
    }
 
    // method name getValues with annotations at the parameter
    public String
        getValues(@AnnotationDemo(field1 = "GFG",
                                  field2 = "Works",
                                  field3 = "fine",
                                  field4 = "Hurray!!")
                  String value)
    {
        System.out.println("setManyValues");
        return value;
    }
 
    public static void
        printAnnotation(Annotation[][] Arrayannotations)
    {
        System.out.println("Annotation length: "
                           + Arrayannotations.length);
 
        // print parameter annotation
        for (Annotation[] annotationRow : Arrayannotations) {
            for (Annotation annotation : annotationRow) {
 
                AnnotationDemo anndemo = (AnnotationDemo)annotation;
                System.out.println("field1 of annotation: "
                                   + anndemo.field1());
                System.out.println("field2 of annotation: "
                                   + anndemo.field2());
                System.out.println("field3 of annotation: "
                                   + anndemo.field3());
                System.out.println("field4 of annotation: "
                                   + anndemo.field4());
            }
        }
    }
}
 
// create a custom Annotation to apply on method
@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationDemo {
 
    // This annotation has many attributes.
    public String field1();
    public String field2();
    public String field3();
    public String field4();
}
Producción:

Method Name: getValues
Annotation length: 1
field1 of annotation: GFG
field2 of annotation: Works
field3 of annotation: fine
field4 of annotation: Hurray!!
Method Name: setValue
Annotation length: 0

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

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 *