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

Requisito previo : clase Java.lang.Class en Java | Conjunto 1 , clase Java.lang.Class en Java | conjunto 2

La clase de método java.lang.reflect nos ayuda a obtener información de un solo método en una clase o interfaz. Esta clase también proporciona acceso a los métodos de las clases y los invoca en tiempo de ejecución.

método getParameterTypes() de la clase Method:
para crear métodos, muchas veces se necesitan parámetros para que esos métodos funcionen correctamente. El método getParameterTypes() de la clase Method devuelve una array de objetos Class que representa los tipos de parámetros declarados en el método en el momento de la codificación. getParameterTypes() devuelve una array de longitud 0 si el objeto del método no toma parámetros.

Sintaxis:

public Class[] getParameterTypes()

Parámetros: El método no toma ningún parámetro.

Valor devuelto: el método devuelve una array de objetos de clase que representa los tipos de parámetros formales del objeto de método, en orden de declaración.

Los siguientes programas ilustran el método getParameterTypes() de la clase Method:

Programa 1: el programa a continuación imprimirá los detalles de la array de objetos de clase que representan los tipos de parámetros formales del objeto de método definido en el programa.

/*
* Program Demonstrate how to apply getParameterTypes() method
* of Method Class.
*/
import java.lang.reflect.Method;
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
        try {
            // Create class object
            Class classobj = GFG.class;
  
            // Get Method Object
            Method[] methods = classobj.getMethods();
  
            // Iterate through methods
            for (Method method : methods) {
  
                // We are only taking method defined in the demo class
                // We are not taking other methods of the object class
                if (method.getName().equals("setValue")
                    || method.getName().equals("getValue")
                    || method.getName().equals("setManyValues")) {
                    // Apply getGenericParameterTypes() method
                    Class[] parameters = method.getParameterTypes();
  
                    // Print parameter Types of method Object
                    System.out.println("\nMethod Name : "
                                       + method.getName());
                    System.out.println("No of Parameters : "
                                       + parameters.length);
                    System.out.println("Parameter object details:");
                    for (Class classobject : parameters) {
                        System.out.println(classobject.getName());
                    }
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    // Method containing two parameter
    public void setValue(String value1, String value2)
    {
        System.out.println("setValue");
    }
  
    // Method containing no parameter
    public String getValue()
    {
        System.out.println("getValue");
        return "getValue";
    }
  
    // Method containing many parameter
    public void setManyValues(int value1, double value2, String value3)
    {
        System.out.println("setManyValues");
    }
}
Producción:

Method Name : setManyValues
No of Parameters : 3
Parameter object details:
int
double
java.lang.String

Method Name : getValue
No of Parameters : 0
Parameter object details:

Method Name : setValue
No of Parameters : 2
Parameter object details:
java.lang.String
java.lang.String

Programa 2: estamos dando un objeto de clase de parámetro como entrada y, a continuación, el programa contará el número de esos parámetros de tipo si el objeto Método contiene un parámetro; de lo contrario, el programa devuelve 0.

/*
* Program Demonstrate how to apply getParameterTypes() method
* of Method Class.
*/
import java.lang.reflect.Method;
import java.lang.reflect.Type;
  
public class GFG3 {
  
    // Main method
    public static void main(String[] args)
    {
        try {
            // Create class object
            Class classobj = sample.class;
  
            Method[] methods = classobj.getMethods();
  
            /* Check whether setManyValues() method contains 
                        int parameter or not
                and print no of string parameter it contains*/
  
            for (Method method : methods) {
                if (method.getName().equals("setValue")) {
                    int count = containsParameter(method, 
                               (Class)java.lang.String.class);
                    System.out.println("No of String "+
                        "Parameters in setValue(): " + count);
                }
            }
  
            /* Check whether setManyValues() method contains 
                        int parameter or not
            and print no of string parameter it contains */
  
            for (Method method : methods) {
                if (method.getName().equals("setManyValues")) {
                    int count = containsParameter(method, 
                                            (Class) int.class);
                    System.out.println("No of int Parameters"+
                             " in setManyValues(): " + count);
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
  
    // Count no of parameters contain by method same as passed to method
    private static int containsParameter(Method method, Class parameterName)
    {
        int count = 0;
  
        // Get all parameter class objects  using getParameterTypes()
        Class parameters[] = method.getParameterTypes();
  
        for (int i = 0; i < parameters.length; i++) {
            // Check contains parameter or not
            if (parameters[i] == parameterName) {
                count++;
            }
        }
  
        return count;
    }
}
// A simple class
class sample {
  
    // Method containing two parameter
    public void setValue(String value1, String value2)
    {
        System.out.println("setValue");
    }
  
    // Method containing many parameter
    public void setManyValues(int value1, double value2, String value3)
    {
        System.out.println("setManyValues");
    }
}
Producción:

No of String Parameters in setValue(): 2
No of int Parameters in setManyValues(): 1

Referencia:
Oracle Doc para getParameterTypes()

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 *