El método java.lang.reflect .Method.getAnnotatedReturnType() devuelve un objeto AnnotatedType que representa AnnotatedType para especificar el tipo de retorno de Method Object. Si se crea un objeto Method para un constructor, entonces el objeto AnnotatedType especifica el tipo del objeto construido. Si se crea un objeto Method para un método, el objeto AnnotatedType especifica el uso de un tipo para especificar el tipo de retorno del método especificado en el código fuente.
El AnnotatedType devuelto representa la implementación del mismo AnnotatedType o cualquiera de sus subinterfaces como AnnotatedArrayType, AnnotatedParameterizedType, AnnotatedTypeVariable, AnnotatedWildcardType. AnnotatedType representa el uso potencialmente anotado de cualquier tipo, incluido un tipo de array, un tipo parametrizado, una variable de tipo o un tipo comodín que se ejecuta actualmente en Java Virtual Machine.
Sintaxis:
public AnnotatedType getAnnotatedReturnType()
Valor de retorno: este método devuelve un objeto AnnotatedType que representa AnnotatedType para especificar el tipo de retorno de Method Object.
Los siguientes programas ilustran el método getAnnotatedReturnType() de la clase Method:
Ejemplo 1: Use AnnotatedType() para un método específico dado como Entrada.
El programa contiene un nombre de método getAddressMethod que contiene AnnotatedType. Entonces, este programa obtendrá detalles de AnnotatedType, contenidos en el método getAddressMethod.
// Java program to demonstrate how to // apply getAnnotatedReturnType() method // of Method Class. import java.lang.annotation.*; import java.lang.reflect.AnnotatedType; import java.lang.reflect.Method; import java.util.Arrays; public class GFG { // Creating custom AnnotatedType @Target({ ElementType.TYPE_USE }) @Retention(RetentionPolicy.RUNTIME) private @interface customAnnotatedType { } // a sample method with return type String and // AnnotatedType is @customAnnotatedType public @customAnnotatedType String getAddress() { return null; } // main method public static void main(String[] args) { try { // create class object Class classobj = GFG.class; // create method object of getAddress Method getAddressMethod = null; Method[] methods = classobj.getMethods(); for (Method m : methods) { if (m.getName().equals("getAddress")) getAddressMethod = m; } // get AnnotatedType for return type AnnotatedType annotatedType = getAddressMethod .getAnnotatedReturnType(); // print AnnotatedType details with Method name System.out.println("Method Name: " + getAddressMethod.getName()); System.out.println("Type: " + annotatedType.getType().getTypeName()); System.out.println("Annotations: " + Arrays.toString(annotatedType.getAnnotations())); } catch (Exception e) { e.printStackTrace(); } } }
Method Name: getAddress Type: java.lang.String Annotations: [@GFG$customAnnotatedType()]
Ejemplo 2: Para imprimir Anotación en tipo de array o array multidimensional o Genérico para Métodos de clase GFG.
// Java program to demonstrate how to // apply getAnnotatedReturnType() method // of Method Class. import java.lang.annotation.*; import java.lang.reflect.*; import java.util.List; public class systemUTCMethodDemo<T> { // Creating custom AnnotatedType @Target({ ElementType.TYPE_USE }) @Retention(RetentionPolicy.RUNTIME) private @interface customAnnotatedType { } // a sample method with Annotation on array type public @customAnnotatedType String[] getAddress() { return null; } // a sample method on Annotation on multidimensional array public String[] @customAnnotatedType[] getvalues() { return null; } // a sample method on Annotation on a type with generic public @customAnnotatedType List<T> getWords() { return null; } // main method public static void main(String[] args) { try { // create class object Class classobj = systemUTCMethodDemo.class; // create method object of getAddress and getValues Method[] methods = classobj.getMethods(); for (Method m : methods) { // if method object is for getAddress and getValues // then print @customAnnotatedType for both if (m.getName().equals("getAddress") || m.getName().equals("getvalues") || m.getName().equals("getWords")) { printDetails(m); } } } catch (Exception e) { e.printStackTrace(); } } public static void printDetails(Method m) { // get AnnotatedType for return type AnnotatedType annotatedType = m.getAnnotatedReturnType(); // print AnnotatedType details with Method name System.out.println("Method Name: " + m.getName()); System.out.println("Type: " + annotatedType.getType().getTypeName()); System.out.println("Annotations: " + annotatedType); System.out.println(); } }
Method Name: getWords Type: java.util.ListAnnotations: sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedParameterizedTypeImpl@12a3a380 Method Name: getvalues Type: java.lang.String[][] Annotations: sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedArrayTypeImpl@29453f44 Method Name: getAddress Type: java.lang.String[] Annotations: sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedArrayTypeImpl@5cad8086
Referencia: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedType.html
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA