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

El método java.lang.reflect .Method.getTypeParameters() de la clase Method devuelve una array de objetos TypeVariable declarados por la declaración genérica de este objeto Method, en orden de declaración. Los elementos de la array representan los objetos de variables de tipo declarados por Método. Este getTypeParameters() devuelve una array de longitud 0, si la declaración genérica del objeto de método no contiene variables de tipo. 

Sintaxis:

public TypeVariable<Method>[] getTypeParameters()

Valor devuelto: este método devuelve una array de objetos TypeVariable declarados por la declaración genérica de este objeto Method 

Excepción: este método devuelve GenericSignatureFormatError si la firma genérica de este objeto de método no coincide con el formato especificado en la especificación JVM. 

El siguiente programa ilustra el método getTypeParameters() de la clase Method: 

Ejemplo 1: Explicación: este código obtiene una lista de todos los métodos de una clase. Estos luego se iteran a través del bucle y se obtiene el TypeVariable, si hay algún TypeVariable definido en el momento de la declaración de esos métodos. Si hay algún TypeVariable disponible para esos métodos, se imprime el nombre de TypeVariable. 

Java

/*
* Program Demonstrate getTypeParameters() method
* of Method Class.
*/
import java.lang.reflect.Method;
import java.lang.reflect.TypeVariable;
 
public class GFG {
 
    // In this method, there is a
    // Type parameter N which extends Number class
    public <N extends Number> void getSampleMethod(N n)
    {
    }
 
    // create main method
    public static void main(String args[])
    {
 
        try {
 
            // create class object for class name GFG
            Class c = GFG.class;
 
            // get list of all Method objects of class GFG
            Method[] methods = c.getMethods();
 
            // loop through all methods and
            // try to get Type Parameter of Method
            for (Method m : methods) {
 
                // get TypeVariable array by getTypeParameters() method
                TypeVariable[] types = m.getTypeParameters();
 
                // print Type Parameter details for every TypeVariable
                for (TypeVariable t : types) {
 
                    // print type parameter name
                    // along with there method name
                    System.out.println("Type variable for Method Name "
                                       + m.getName() + " is "
                                       + t.getName());
                }
            }
        }
        catch (Exception e) {
 
            // print Exception Message if
            // any exception occurred in program
            e.printStackTrace();
        }
    }
}
Producción:

Type variable for Method Name getSampleMethod is N

Ejemplo 2: En este programa hay más de un tipo de parámetro de métodos. En este programa, el parámetro de tipo se obtiene mediante la función getTypeParameter() e imprime los detalles de esos parámetros de tipo. 

Java

/*
* Program Demonstrate getTypeParameters() method
* of Method Class having more than one type
parameter of methods
*/
import java.lang.*;
 
public class GFG {
 
    // In this method,
    // there are three Type parameters
    // N which extends Number class,
    // E extends RuntimeException Class
    // and C extends Character class.
    public <N extends Number,
                      E extends RuntimeException,
                                C extends Character> void
    getSampleMethod(N n) throws E
    {
    }
 
    // In this method,
    // there are Two Type parameters :
    // A which extends the ArrayList class,
    // L extends the LinkedList class
    public <A extends ArrayList, L extends LinkedList> L
    SetSampleMethod(A a, L l)
    {
        return l;
    }
 
    // create main method of class
    public static void main(String args[])
    {
 
        try {
 
            // create class object for
            // class name GFG to get methods list
            // of GFG class
            Class c = GFG.class;
 
            // get list of all Method objects of
            // class GFG in array of Methods
            Method[] methods = c.getMethods();
 
            // loop through all methods and
            // try to get Type Parameter of Method
            for (Method m : methods) {
 
                // get TypeVariable array by
                // getTypeParameters method
                TypeVariable[] types = m.getTypeParameters();
 
                // If there are 1 or more than 1
                // type variables for the current
                // method of loop then print method name
                if (types.length > 0)
                    System.out.println("\nType variable Details"
                                       + " for Method Name "
                                       + m.getName());
 
                // print Type Parameter details
                // for Current Method of loop
                for (TypeVariable t : types) {
                    // get bounds for current TypeVariable
                    // and print the Name of TypeVariable and bounds
                    Type[] bounds = t.getBounds();
 
                    // print TypeVariable name and Bounds
                    System.out.println("Name : "
                                       + t.getName());
                    System.out.println("Bounds : "
                                       + Arrays.toString(bounds));
                }
            }
        }
        catch (Exception e) {
            // print Exception message if some Exception occurs
            e.printStackTrace();
        }
    }
}
Producción:

Type variable Details for Method Name getSampleMethod
Name : N
Bounds : [class java.lang.Number]
Name : E
Bounds : [class java.lang.RuntimeException]
Name : C
Bounds : [class java.lang.Character]

Type variable Details for Method Name SetSampleMethod
Name : A
Bounds : [class java.util.ArrayList]
Name : L
Bounds : [class java.util.LinkedList]

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

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 *