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.

272<br />

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

Ahora, al ser clases las enumeraciones, podemos inspeccionar sus<br />

elementos utilizando reflexión. Encontraremos que hay varios métodos<br />

y constructores en las enumeraciones, tengamos en cuenta que estos<br />

son generados por el compilador automáticamente.<br />

Ahora vamos a obtener uno de los elementos como atributo.<br />

// obtenemos el atributo para el elemento SECONDS<br />

Field attr = TimeUnit.class.getField(“SECONDS”);<br />

// verificamos que esté marcado como enum<br />

assertTrue(attr.isEnumConstant());<br />

// recuperamos el valor del atributo<br />

TimeUnit seconds = (TimeUnit) attr.get(null);<br />

// y lo comparamos con el elemento directamente<br />

assertSame(seconds, TimeUnit.SECONDS);<br />

Proxy y generación<br />

de código<br />

Se conoce como proxy a un objeto que está representando a otro<br />

y restringe su acceso. Proxy es uno de los patrones de diseño más<br />

conocidos. Se lo utiliza, por ejemplo, para cuando no queremos tener<br />

un objeto gigante en memoria, de modo que creamos un proxy y<br />

forma de las enumeraciones<br />

Cuando accedemos por reflexión a las enumeraciones y las inspeccionamos, podemos ver que en<br />

realidad son un truco del lenguaje y que el compilador genera clases y atributos para ellas. Son elementos<br />

para el lenguaje pero para la máquina virtual son solamente clases comunes y corrientes con atributos y<br />

métodos. Esto es un buen ejemplo de cómo abstraer patrones de código.<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!