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(); }
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(); }
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