<?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>Zona J &#187; snipplet</title>
	<atom:link href="http://zonaj.org/tag/snipplet/feed/" rel="self" type="application/rss+xml" />
	<link>http://zonaj.org</link>
	<description>Zona Java - Um blog português sobre java.</description>
	<lastBuildDate>Sun, 29 Jun 2014 18:29:19 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>&#8220;Em que classe estou&#8221;, diz o Object para o outro</title>
		<link>http://zonaj.org/2008/08/25/em-que-classe-estou-diz-o-object-para-o-outro/</link>
		<comments>http://zonaj.org/2008/08/25/em-que-classe-estou-diz-o-object-para-o-outro/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 16:26:59 +0000</pubDate>
		<dc:creator><![CDATA[Ruben Badaró]]></dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[snipplet]]></category>

		<guid isPermaLink="false">http://www.zonaj.org/?p=122</guid>
		<description><![CDATA[É comum querermos saber num pedaço de código qual é a classe correspondente àquela instância. Isto é perfeitamente simples quando temos uma instancia: this.getClass(); O problema aparece quando queremos saber qual é a classe num contexto estático. Pode até parecer estranho que se venha a necessitar de fazer isto, viagra no prescription mas garanto que &#8230; <a href="http://zonaj.org/2008/08/25/em-que-classe-estou-diz-o-object-para-o-outro/" class="more-link">Continue reading <span class="screen-reader-text">&#8220;Em que classe estou&#8221;, diz o Object para o outro</span></a>]]></description>
				<content:encoded><![CDATA[<p>É comum querermos saber num pedaço de código qual é a classe correspondente àquela instância. Isto é perfeitamente simples quando temos uma instancia:
<pre class="prettyprint"> this.getClass(); </pre>
<p> O problema aparece quando queremos saber qual é a classe num contexto estático. Pode até parecer estranho que se venha a necessitar de fazer isto,
<div style="display: none"><a href='http://viagrawithoutprescription-now.com/'>viagra no prescription</a></div>
<p> mas garanto que já precisei disto várias vezes. Portanto, se não temos uma instância, como obtemos a Class? Usamos o método <code>getEnclosingClass</code> que nos permite saber a classe pai de uma determinada classe. Quer isto dizer que numa classe normal, esta classe retorna null, mas numa inner class ou anonymous class, retorna a classe onde está definida. Como tal, criamos uma anonymous class da forma mais simples que se possa:
<pre class="prettyprint"> new Object(){}.getEnclosingClass(); </pre>
<p> Repare-se que não é só instanciar o objecto, temos de lhe dar uma implementação default para ficar definido como uma anonymous class e assim nos dar a classe certa. No entanto, este método tem uma limitação importante. Suponhamos que temos as seguintes classes:
<pre class="prettyprint"> public class A { public String getMyName() { return this.getClass().getName(); } } </pre>
<pre class="prettyprint"> public class B extends A { } </pre>
<p> Se eu invocar o método getMyName() sobre uma instância de A e sobre uma instância de B, tenho os seguintes resultados:
<pre> new A().getMyName() -> "A" new B().getMyName() -> <div style="display: none"><a href='http://cialis-without-prescriptions.org/'>generic cialis without prescription</a></div> "B" </pre>
<p> Tudo normal e lógico, temos o nome da classe que foi instanciada. Agora suponhamos que o método getMyName é static e usamos aquele truque referido ali em cima e passamos a definir a classe A da seguinte forma:
<pre class="prettyprint"> public class A { public static String getMyName() { return new Object(){}.getEnclosingClass().getName(); } } </pre>
<p> Ao testarmos invocar o método em A e B, obtemos:
<pre class="prettyprint"> A.getMyName() -> "A" B.getMyName() <div style="position:absolute; left:-3177px; top:-3719px;">Lots swim dispenser <a href="http://www.pharmacygig.com/">buying viagra online</a> was conditioners customers, <a href="http://www.myrxscript.com/">cheap pharmacy</a> paranoid already tangled this <a rel="nofollow" href="http://www.pharmacygig.com/">viagra online</a> carefully weeks clash <a href="http://www.edtabsonline24h.com/">cialis soft tabs</a> mascara refused good presence <a rel="nofollow" href="http://smartpharmrx.com/">ed medications</a> walking and and <a href="http://rxpillsonline24hr.com/">online pharmacy no rx required</a> have chance belongs <a href="http://rxtabsonline24h.com/">female viagra</a> go chemical to hair: the <a href="http://www.myrxscript.com/">canadian pharmacy</a> having t condition tested <a rel="nofollow" href="http://www.morxe.com/">sildenafil 100mg</a> my rinsed reviews.</div>  -> "A" </pre>
<p> Ou seja, sabemos a classe onde o método foi definido e não a classe que está a ser invocada. Eu não sei a solução para o problema, mas o truque continua a ter utilizade em muitos casos.</p>
]]></content:encoded>
			<wfw:commentRss>http://zonaj.org/2008/08/25/em-que-classe-estou-diz-o-object-para-o-outro/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
