A teljesség kedvéért a fenti cikkben lévő hivatkozás tovább finomítja a képet:<br><a href="http://stackoverflow.com/questions/7472195/passing-final-variables-to-anonymous-classes">http://stackoverflow.com/questions/7472195/passing-final-variables-to-anonymous-classes</a><br clear="all">
<br>Üdv:<br><b>Vig Balázs<br></b><br>
<br><br><div class="gmail_quote">2012. szeptember 12. 9:05 Gábor Lipták írta, <span dir="ltr">&lt;<a href="mailto:gabor.liptak@gmail.com" target="_blank">gabor.liptak@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ehun a válasz:<div><br></div><div><a href="http://stackoverflow.com/a/4732617/337621" target="_blank">http://stackoverflow.com/a/4732617/337621</a></div><div><br><br><div class="gmail_quote">2012. szeptember 12. 8:25  írta, <span dir="ltr">&lt;<a href="mailto:istvan.ketler@lhsystems.com" target="_blank">istvan.ketler@lhsystems.com</a>&gt;</span>:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Sziasztok,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">itt semmi probléma nincs, és nem is értem miért bonyolítjátok ennyire túl.<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">A Java Language Specification a következőt mondja (8.1.3 – Inner Classes and Enclosing Instances):<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;color:windowtext">Any local variable, formal method parameter or exception handler parameter<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;color:windowtext">used but not declared in an inner class must be declared
</span><span style="font-size:9.5pt;font-family:&quot;LucidaSans-Typewriter&quot;,&quot;sans-serif&quot;;color:windowtext">final</span><span style="font-size:11.0pt;color:windowtext">. Any local variable,<u></u><u></u></span></p>


<p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;color:windowtext">used but not declared in an inner class must be definitely assigned (§16)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:windowtext">before the body of the inner class.</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Hát ezért kell final-nak lennie. S ha kétséged lenne afelől, hogy „inner class”-ról beszélünk-e, akkor ugyanitt ezt is megjegyzi:<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;color:windowtext">Inner classes include local (§14.3), anonymous (§15.9.5) and non-static member<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:windowtext">classes (§8.5).</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Amiről Ti értekeztetek, az nem a miért, hanem a hogyan. A miért kérdésre az a válasz, hogy azért mert a nyelv specifikációja ezt előírja. Ahhoz ugyanis, hogy
 azt a nyomorult local változót a belső osztály létrehozásakor tárolhassa, ahhoz annak nem kéne final-nak lennie, hiszen a második mondat biztosan teljesül:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;color:windowtext">A local variable (§14.4, §14.14) must be explicitly given a value before it is<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:11.0pt;color:windowtext">used, by either initialization (§14.4) or assignment (§15.26), in a way that can<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;color:windowtext">be verified by the compiler using the rules for definite assignment (§16).</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Ebből az következik, hogy a második mondat teljesülne akkor is, ha nem lenne final.<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">A kérdés tehát nem az, hogy miért kell final-ként deklarálni. A kérdés az, hogy a nyelv speckója miért írja elő. Erre pedig szerintem nincs válasz, hiszen az
 inner class-beli tároláskor simán elérhetné (ha akarná) a nem final local variable-t is.  Ezt megindokolni semmiféle bájtkóddal nem fogod szerintem. A legjobb indoklás, ami szerintem kitalálható, a „mert csak”.<u></u><u></u></span></p>


<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Esetleg a „ne érd el véletlenül, tenned kelljen érte valamit hogy elérhesd” filozófia lehet a háttérben (ha véletlenül elírsz egy változónevet, és az még véletlenebbül
 egy külső lokál változó neve, akkor simán lefordulna ha nem lenne előírás a final). De ez csak találgatás.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Ha valakinek lenne jobb ötlete, nagy örömmel venném ha megosztaná.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Üdvözlettel,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Iván<u></u><u></u></span></p>
<div>
<p class="MsoNormal"><b><span style="font-size:9.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">István Ketler<br>
</span></b><span style="font-size:9.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Senior Consultant</span><span style="color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Lufthansa Systems Hungaria Kft.
<br>
Development Center Pest <br>
Neumann János u. 1/e<br>
1117 Budapest<br>
Hungary <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Tel: <a href="tel:%2B36%201%20887-2815" value="+3618872815" target="_blank">+36 1 887-2815</a>
<br>
Fax: <a href="tel:%2B36%201%20887-2977" value="+3618872977" target="_blank">+36 1 887-2977</a><br>
Mobile: <a href="tel:%2B36%2030%20600-4936" value="+36306004936" target="_blank">+36 30 600-4936</a> </span><span style="color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Room: Infopark E, Room LH2-24
</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">e-mail:
<a href="mailto:istvan.ketler@lhsystems.com" target="_blank">istvan.ketler@lhsystems.com</a> <br>
Internet: <a href="http://www.lhsystems.hu/" target="_blank">www.LHsystems.hu</a></span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div>
</div></div></div>
<div>
<p class="MsoNormal" style="MARGIN:0cm 0cm 0pt"></p>
<p class="MsoNormal" style="MARGIN:0cm 0cm 0pt"></p>
<p class="MsoNormal" style="MARGIN:0cm 0cm 0pt"> </p>
<p class="MsoNormal" style="MARGIN:0cm 0cm 0pt"><span style="FONT-SIZE:8pt;COLOR:gray;FONT-FAMILY:Arial">Sitz der Gesellschaft / Corporate Headquarters: </span><span style="FONT-SIZE:8pt;COLOR:gray;FONT-FAMILY:Arial" lang="EN-GB">Lufthansa Systems Hungaria Kft, Budapest, Fövarosi Birosag 01-09-463417<br>

</span><span style="FONT-SIZE:8pt;COLOR:gray;FONT-FAMILY:Arial">Geschaeftsfuehrung / Management Board: Peter Sipos</span></p>
<p class="MsoNormal" style="MARGIN:0cm 0cm 0pt"><br></p>
<p class="MsoNormal" style="MARGIN:0cm 0cm 0pt"></p><div><div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext" lang="EN-US">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext" lang="EN-US"> <a href="mailto:javalist-bounces@lists.javaforum.hu" target="_blank">javalist-bounces@lists.javaforum.hu</a>
 [mailto:<a href="mailto:javalist-bounces@lists.javaforum.hu" target="_blank">javalist-bounces@lists.javaforum.hu</a>] <b>On Behalf Of </b>Varjasi Norbert<br>
<b>Sent:</b> Tuesday, September 11, 2012 2:59 PM<br>
<b>To:</b> Java lista<br>
<b>Subject:</b> Re: [Javalist] miért kell final<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Szia!<br>
A probléma a belső-külső osztályok szerkezetéből fakad.<br>
A lokális osztály ugyan látja a definíciós pontjában a külső osztály elérhető változóit, ám törzsében csak olyan final változókra hivatkozhatunk,  amelyek már kaptak kezdőértéket.
<br>
Ezt a korlátozást azért vezették be, mert ezek az osztályok a lokális változókról másolatot készítenek és az osztályt tartalmazó blokkból való kilépés után is megőrzik értéküket, zárványok keletkeznének.<br>
üdv:  VN.<br>
<br>
<br>
2012-09-11 13:58 keltezéssel, Peter Verhas írta:<u></u><u></u></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">A következő kis mintapéldában: <u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">public class WhyFinal {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>interface Outer {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>String method();<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>public Outer method(final String s) {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>class Inner implements Outer {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>public String method() {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>return s + &quot; wonka&quot;;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>return new Inner();<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>public static void main(String[] args) {<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>System.out.println(new WhyFinal().method(&quot;bonka&quot;).method());<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span></span>}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">miért kell, hogy a &#39;String s&#39; argumentum final legyen?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888">--</span></span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><br>


</span><span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888">Verhás Péter</span></span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><br>


<span><a href="mailto:peter@verhas.com" target="_blank">peter@verhas.com</a></span><br>
</span><span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888"><a href="tel:%2B36%2830%299306805" value="+36309306805" target="_blank">+36(30)9306805</a></span></span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><br>


</span><span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888">skype: verhas</span></span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><u></u><u></u></span></p>


</div>
</div>
<p class="MsoNormal"><span style="font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><u></u> <u></u></span></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal"><br>
<br>
<br>
<u></u><u></u></p>
<pre>_______________________________________________<u></u><u></u></pre>
<pre>Javalist mailing list<u></u><u></u></pre>
<pre><a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><u></u><u></u></pre>
<pre><a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><span><font color="#888888"><u></u><u></u></font></span></pre><span><font color="#888888">
</font></span></blockquote><span><font color="#888888">
<p class="MsoNormal"><br>
<br>
<br>
<u></u><u></u></p>
<pre>-- <u></u><u></u></pre>
<pre>Varjasi Norbert     <a href="mailto:varjasin@sze.hu" target="_blank">varjasin@sze.hu</a><u></u><u></u></pre>
<pre><u></u> <u></u></pre>
<pre><u></u> <u></u></pre>
</font></span></div>
<p></p></div></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br>