El método java.lang.reflect .Method.getGenericParameterTypes() de la clase Method devuelve una array de objetos Type que representan los tipos de parámetros, declarados en method en el momento de la codificación. Significa que el método getGenericParameterTypes() devuelve una array de parámetros que pertenecen al objeto del método. Devuelve una array de longitud 0 si el objeto del método no toma parámetros.
Si un tipo de parámetro 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 public void getValue(T value){}, sustituya un parámetro de tipo T por un tipo parametrizado (es decir, List), luego el método devolverá «java.util.List» como tipo de parámetro.
Sintaxis:
public Type[] getGenericParameterTypes()
Valor devuelto: este método devuelve una array de tipos que representan los tipos de parámetros formales del objeto del método, en orden de declaración.
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 los tipos de parámetros hacen referencia a una declaración de tipo inexistente.
- MalformedParameterizedTypeException : si los tipos de parámetros subyacentes hacen referencia a un tipo parametrizado del que no se puede crear una instancia por ningún motivo.
Los siguientes programas ilustran el método getGenericParameterTypes() de la clase Method:
Programa 1: Imprime todos los tipos de parámetros declarados para el método
// Program Demonstrate how to apply getGenericParameterTypes() 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 = demoClass. class ; // get Method Object Method[] methods = classobj.getMethods(); // iterate through methods for (Method method : methods) { // only taking method defined in the demo class if (method.getName().equals( "setValue" ) || method.getName().equals( "getValue" ) || method.getName().equals( "setManyValues" )) { // apply getGenericParameterTypes() method Type[] parameters = method.getGenericParameterTypes(); // 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 (Type type : parameters) { System.out.println(type.getTypeName()); } } } } catch (Exception e) { e.printStackTrace(); } } } // a simple class class demoClass { // 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 containg many parameter public void setManyValues( int value1, double value2, String value3) { System.out.println( "setManyValues" ); } } |
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: Comprobar si el objeto Método contiene parámetro o no
// Program Demonstrate how to apply getGenericParameterTypes() // 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 = 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, (Type)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, (Type) 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, Type parameterName) { int count = 0 ; // get all parameter types list // using getGenericParameterTypes() Type parameters[] = method.getGenericParameterTypes(); 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" ); } } |
No of String Parameters in setValue(): 2 No of int Parameters in setManyValues(): 1
Referencia: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#getGenericParameterTypes–
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA