El método getGenericReturnType() de la clase java.lang.reflect .Method devuelve un objeto Type que representa el tipo de retorno, declarado en el método en el momento de la codificación. Por lo tanto, el método getGenericReturnType() devuelve el tipo de retorno del objeto de método.
Si un tipo de devolución formal es un tipo parametrizado, el objeto Type devuelto debe reflejar con precisión los parámetros de tipo reales utilizados en el código fuente. Por ejemplo, para el método público T getValue(){}, si el tipo T se sustituye por un tipo parametrizado (es decir, Lista), entonces getGenericReturnType() devolverá «java.util.List<java.lang.String>» como tipo de retorno.
Sintaxis:
public Type getGenericReturnType()
Valor de Retorno: Devuelve un objeto Tipo que representa el tipo de retorno formal del objeto método.
Excepción: este método arroja las siguientes excepciones:
- GenericSignatureFormatError : si la firma del método genérico no es la misma que el formato especificado en la especificación JVM.
- TypeNotPresentException : si el tipo de retorno hace referencia a una declaración de tipo inexistente.
- MalformedParameterizedTypeException : si el tipo de valor devuelto subyacente hace referencia a un tipo parametrizado del que no se puede crear una instancia por ningún motivo.
Ejemplos:
Code: public class demo{ public T getValue(){} } Explanation: In the above method when we going to apply getGenericReturnType() method it is going to return T as a generic return type. Code: public class demo{ public List getValue(){} } Explanation: In the above method when we going to apply getGenericReturnType() method it is going to return java.util.List<java.lang.String> as a generic return type
Los siguientes programas ilustran el método getGenericReturnType() de la clase Method
Programa 1: Imprima el tipo de devolución del objeto de método aplicando getGenericReturnType() en un método.
Java
// Program to apply getGenericReturnType() method // of Method Class. import java.lang.reflect.Method; import java.lang.reflect.Type; public class GFG { // Main method public static void main(String[] args) { try { // create class object Class classobj = demoForReturnParam.class; // get Method Object Method[] methods = classobj.getMethods(); // iterate through methods for (Method method : methods) { // taking only method defined in the demo class if (method.getName().equals("setValue") || method.getName().equals("getValue") || method.getName().equals("setManyValues")) { // apply getGenericReturnType() method Type returnParam = method.getGenericReturnType(); // print return Types of method Object System.out.println("\nMethod Name : " + method.getName()); System.out.println("Return Type Details: " + returnParam); } } } catch (Exception e) { e.printStackTrace(); } } } // a simple class class demoForReturnParam { // method returning int value public int setValue() { System.out.println("setValue"); return 24; } // method returning string value public String getValue() { System.out.println("getValue"); return "getValue"; } // method returning nothing public void setManyValues(int value1, String value3) { System.out.println("setManyValues"); } }
Method Name : setManyValues Return Type Details: void Method Name : getValue Return Type Details: class java.lang.String Method Name : setValue Return Type Details: int
Programa 2: dar un tipo de parámetro de devolución como entrada para verificar si el objeto del método tiene el mismo tipo de devolución o no.
Java
// Program to show how to apply // getGenericReturnType() method of Method Class import java.lang.reflect.Method; import java.lang.reflect.Type; public class GFG { // Main method public static void main(String[] args) { try { // create class object Class classobj = DemoForReturnParam.class; Method[] methods = classobj.getMethods(); // check whether setManyValues() method // contains string parameter or not for (Method method : methods) { if (method.getName().equals("setValue")) { boolean flag = containsReturnParameter(method, (Type)java.lang.String.class); System.out.println("setValue()" + " contains int return type: " + flag); } } // check whether setManyValues() method // contains int parameter or not for (Method method : methods) { if (method.getName().equals("setManyValues")) { boolean flag = containsReturnParameter(method, (Type) int.class); System.out.println("setManyValues()" + " contains int return type: " + flag); } } } catch (Exception e) { e.printStackTrace(); } } // check whether method object // have same return type or not private static boolean containsReturnParameter(Method method, Type parameterName) { // get return type using getGenericReturnType() Type returnParameter = method.getGenericReturnType(); // check contains return parameter or not if (returnParameter == parameterName) { return true; } return false; } } // a simple class class DemoForReturnParam { // method returning int value public void setValue() { System.out.println("setValue"); } // method returning nothing public int setManyValues(int value1, String value3) { System.out.println("setManyValues"); return 21; } }
setValue() contains int return type: false setManyValues() contains int return type: true
Referencia:
https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#getGenericReturnType–
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA