<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>davidcontreras.es &#187; reflection</title>
	<atom:link href="http://www.davidcontreras.es/blog/tag/reflection/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davidcontreras.es/blog</link>
	<description>no solo bluetooth by David Contreras Bárcena</description>
	<lastBuildDate>Fri, 04 Jun 2010 15:01:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Annotations sobre atributos y métodos</title>
		<link>http://www.davidcontreras.es/blog/2009/03/31/annotations-sobre-atributos-y-metodos/</link>
		<comments>http://www.davidcontreras.es/blog/2009/03/31/annotations-sobre-atributos-y-metodos/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 16:20:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[annotations]]></category>
		<category><![CDATA[reflection]]></category>

		<guid isPermaLink="false">http://www.davidcontreras.es/blog/?p=36</guid>
		<description><![CDATA[<p>Supongo que los interesados en las anotaciones de Java, ya habrán hecho su Hello World!con los tutoriales que nos facilita Sun (http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html), por ejemplo. Seguramente, quien desee profundizar se encuentre con alguna que otra duda. Aquí muestro un ejemplo de cómo las annotations a atributos con un caso práctico.</p>
<p>Anotaciones sobre atributos:</p>
<p>Paso 1. Se define la anotación: </p>
Code block&#160;&#160;&#160;import java.lang.annotation.*;
@Retention&#40;RetentionPolicy.RUNTIME&#41;
@Target&#40;ElementType.FIELD&#41;
public <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.davidcontreras.es/blog/2009/03/31/annotations-sobre-atributos-y-metodos/">Annotations sobre atributos y métodos</a></span>]]></description>
			<content:encoded><![CDATA[<p>Supongo que los interesados en las anotaciones de Java, ya habrán hecho su <span style="font-style: italic">Hello World!</span>con los tutoriales que nos facilita Sun (http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html), por ejemplo. Seguramente, quien desee profundizar se encuentre con alguna que otra duda. Aquí muestro un ejemplo de cómo las annotations a atributos con un caso práctico.</p>
<p><strong>Anotaciones sobre atributos:</strong></p>
<p><strong></strong><span style="font-weight: bold">Paso 1</span>. Se define la anotación:<span style="font-weight: bold"> </span></p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">import</span> <span class="co2">java.lang.annotation.*</span><span class="sy0">;</span>
@Retention<span class="br0">&#40;</span>RetentionPolicy.<span class="me1">RUNTIME</span><span class="br0">&#41;</span>
@Target<span class="br0">&#40;</span>ElementType.<span class="me1">FIELD</span><span class="br0">&#41;</span>
<span class="kw1">public</span> @<span class="kw1">interface</span> AtributoNoEditable <span class="br0">&#123;</span><span class="br0">&#125;</span></pre></div></div>
<p><strong></strong><span style="font-weight: bold">Paso 2</span>. Se añade a la clase deseada: <span style="font-weight: bold"> </span></p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">public</span> <span class="kw1">class</span> Jugador
<span class="br0">&#123;</span>
   @AtributoNoEditable
   <span class="kw1">private</span> <span class="kw4">int</span> id<span class="sy0">;</span>
   <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> nombre <span class="sy0">;</span>
   <span class="co1">//resto de implementación de la clase</span>
<span class="br0">&#125;</span></pre></div></div><br />
<span style="line-height: 20px;"><span style="font-weight: bold">Paso 3</span>. Un ejemplo de <span style="font-style: italic">Reflection </span>sobre la clase y sus anotaciones:</span></p>
<p><div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.davidcontreras.es/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;nLista de Atributos&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;================&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">for</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afield+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Field</span></a> f<span class="sy0">:</span> <span class="kw1">Class</span>.<span class="me1">forName</span><span class="br0">&#40;</span><span class="st0">&quot;Jugador&quot;</span><span class="br0">&#41;</span>.<span class="me1">getDeclaredFields</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
     <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>f.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
     <span class="co1">//Primera forma posible</span>
     <span class="kw1">if</span><span class="br0">&#40;</span>f.<span class="me1">isAnnotationPresent</span><span class="br0">&#40;</span>AtributoNoEditable.<span class="kw1">class</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
          <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot; -Atributo No Editable-&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
     <span class="co1">//Segunda forma posible</span>
     <span class="kw1">for</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aannotation+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Annotation</span></a> a<span class="sy0">:</span> f.<span class="me1">getAnnotations</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
          <span class="kw1">if</span><span class="br0">&#40;</span>a <span class="kw1">instanceof</span> AtributoNoEditable<span class="br0">&#41;</span>
               <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot; -Atributo No Editable-&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
     <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Para la creación de anotaciones sobre métodos bastaría con especificarlo con el atributo de clase <em>METHOD </em>en la declaración de la Annotation: @Target(ElementType.METHOD).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidcontreras.es/blog/2009/03/31/annotations-sobre-atributos-y-metodos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
