Pasar los tipos primitivos como parámetros usando la reflexividad

2080 vistas

Los tipos primitivos (byte, char, short, int, long, float, double, boolean) tienen un wrapper en el paquete java.lang. Respectivamente son: Byte, Character, Short, Integer, Long, Float, Double, Boolean.

Cada una de estas clases contiene una variable static TYPE de tipo Class. Esta es clase que tendremos que usar para especificar el tipo de parámetro; el valor estará contenido en el objeto del tipo del wrapper.

Ejemplo: llamada de un método que toma un int de parámetro.

En el ejemplo haremos una llamada al método abs(int) de la clase java.lang.Math.



java
  1.   Class types[] = { Integer.TYPE };
  2.   Method method = Math.class.getMethod("abs", types);
  3.   Object parametros[] = { new Integer(-1) };
  4.   Integer iWrap = (Integer) method.invoke(null, parametros);
  5.   System.out.println("Valor absoluto de -1 = " + iWrap);