2011-02-17 13 views
56

Esta es la clase:¿Cómo se usa getMethod() con tipos primitivos?

class Foo { 
    public void bar(int a, Object b) { 
    } 
} 

Ahora estoy tratando de conseguir "reflejar" este método de la clase:

Class c = Foo.class; 
Class[] types = { ... }; // what should be here? 
Method m = c.getMethod("bar", types); 

Respuesta

80

Hay sólo una int.class.

Class[] types = { int.class, Object.class }; 

Una alternativa es Integer.TYPE.

Class[] types = { Integer.TYPE, Object.class }; 

Lo mismo se aplica a otras primitivas.

+0

¿Y cómo se invoca el método? Si deseo pasar boolean a dicho método, no funciona: invoke (null, new Object [] {myString, myBool}); ... boolean no se puede convertir a Object. – Racky

+0

@ Racky funciona para mí, al menos sintácticamente. ¿Estás usando una versión de Java por debajo de 5 (Autoboxing faltante)? – xehpuk

1

El parámetro del método es una primitiva short no un objeto Short.

Reflection no encontrará el método porque ha especificado un objeto corto. Los parámetros en getMethod() tienen que coincidir exactamente.

EDITAR: La pregunta ha cambiado. Inicialmente, la pregunta era encontrar un método que tomara una sola primitiva corta.

Cuestiones relacionadas