Clase de método | Método getGenericReturnType() en Java

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");
    }
}
Producción: 

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;
    }
}
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *