23.02.2017 Views

Java

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

256<br />

Apéndice 1. Reflexión<br />

Ahora, si solamente queremos los métodos definidos en la propia<br />

clase y no nos interesan aquellos heredados, podemos reducir el<br />

espacio de consulta aplicando los métodos primos a los dos que ya<br />

vimos, getDeclaredMethods y getDeclaredMethod. Ambos funcionan de<br />

manera similar, pero se restringe la búsqueda solamente a la clase<br />

actual y de esta forma no se tienen en cuenta las superclases. Si<br />

estamos utilizando getDeclaredMethods.<br />

Method [] metodos = String.class.getDeclaredMethods();<br />

Y utilizando getDeclaredMethod.<br />

Method equals = Date.class.getDeclaredMethod(<br />

“equals”, Object.class);<br />

Es necesario tener en cuenta que la particularidad que tienen<br />

estos métodos es que permiten obtener aquellos que sean públicos,<br />

protegidos o privados, cosa que las otras versiones no permiten.<br />

Una vez que obtenemos un objeto del tipo Method que representa a<br />

un método de instancia, podemos hacer varias cosas con él. Podemos<br />

obtener información sobre los argumentos que acepta, el tipo de objeto<br />

que devuelve como resultado, las excepciones que tiene declaradas<br />

para arrojar, su nombre y muchas otras cosas. También podemos<br />

invocarlo pasándole el objeto que vendría a ser el this, o sea el receptor.<br />

De esta forma, si deseamos conocer los argumentos que son<br />

aceptados por el método en cuestión será necesario que hagamos uso<br />

de los mensajes getParameterTypes.<br />

Encapsulamiento<br />

Si bien podemos tener acceso a los métodos privados de una clase utilizando getDeclaredMethods,<br />

esto no es una buena práctica, ya que estamos rompiendo el encapsulamiento. Siempre que utilizamos<br />

reflexión, deberíamos enfocarnos en los elementos públicos de una clase y no inmiscuirnos en sus asuntos<br />

íntimos. Además, tendríamos que tener mucho conocimiento sobre estos elementos para utilizarlos.<br />

www.redusers.com<br />

www.FreeLibros.me

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

Saved successfully!

Ooh no, something went wrong!