23.02.2017 Views

Java

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Java</strong> 257<br />

// conseguimos el método<br />

Method compareTo = Date.class.getMethod(“compareTo”, Date.class);<br />

// conseguimos los tipos de los parámetros<br />

Class[] parameters = compareTo.getParameterTypes();<br />

// verificamos que sean correctos<br />

assertEquals(parameters.length, 1);<br />

assertSame(parameters[0], Date.class);<br />

Los tipos de los argumentos siempre se pasan y se reciben en el<br />

mismo orden en el que están definidos en el método.<br />

Si estamos lidiando con una clase genérica, con el genérico<br />

instanciado, obtendremos, al consultar los tipos de los argumentos,<br />

los tipos correctos y esperados. Por ejemplo, con Date, que implementa<br />

Comparable, el método compareTo toma un Date como argumento.<br />

También podemos consultar los argumentos genéricos y estudiar la<br />

definición real, genérica o del método, usando getGenericParameterTypes.<br />

// conseguimos el método<br />

Method compareTo = Date.class.getMethod(“compareTo”, Date.class);<br />

// conseguimos los tipos de los parámetros<br />

Type[] genericParameters = compareTo.getGenericParameterTypes();<br />

// verificamos que sean correctos<br />

assertEquals(genericParameters.length, 1);<br />

assertSame(genericParameters[0], Date.class);<br />

Sobre los parámetros<br />

Cuando indicamos los parámetros al momento de buscar un determinado método, debemos pasarlos tal<br />

cual están declarados en la firma de este. No sirve, por ejemplo, pasar una subclase o subinterface, tiene<br />

que ser exacto. Esto es un problema cuando tenemos los argumentos y queremos encontrar el método<br />

que los acepta. En esos casos debemos buscar manualmente el método.<br />

www.FreeLibros.me<br />

www.redusers.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!