<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word"><head><META content="text/html; charset=iso-8859-2" http-equiv="Content-Type">

<meta content="text/html; charset=iso-8859-2" http-equiv="Content-Type">
<meta content="Microsoft Word 12 (filtered medium)" name="Generator">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:LucidaSans-Typewriter;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.apple-tab-span
        {mso-style-name:apple-tab-span;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head><BODY>
<DIV>
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Sziasztok,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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 &#8211; Inner Classes and Enclosing Instances):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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<o:p></o:p></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,<o:p></o:p></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)<o:p></o:p></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"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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 &#8222;inner class&#8221;-ról beszélünk-e, akkor ugyanitt ezt is megjegyzi:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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<o:p></o:p></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"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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<o:p></o:p></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<o:p></o:p></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"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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. &nbsp;Ezt megindokolni semmiféle bájtkóddal nem fogod szerintem. A legjobb indoklás, ami szerintem kitalálható, a &#8222;mert csak&#8221;.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Esetleg a &#8222;ne érd el véletlenül, tenned kelljen érte valamit hogy elérhesd&#8221; 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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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á.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Üdvözlettel,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D">Iván<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><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"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><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 <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:8.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:#999999">Tel: &#43;36 1 887-2815
<br>
Fax: &#43;36 1 887-2977<br>
Mobile: &#43;36 30 600-4936 </span><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><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"><o:p></o:p></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">istvan.ketler@lhsystems.com</a> <br>
Internet: <a href="http://www.lhsystems.hu/">www.LHsystems.hu</a></span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1F497D"><o:p>&nbsp;</o:p></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">&nbsp;</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 LANG="EN-GB" STYLE="FONT-SIZE: 8pt; COLOR: gray; FONT-FAMILY: Arial; mso-ansi-language: 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"><div class="WordSection1"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:windowtext"> javalist-bounces@lists.javaforum.hu
 [mailto:javalist-bounces@lists.javaforum.hu] <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<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></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,&nbsp; 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:&nbsp; VN.<br>
<br>
<br>
2012-09-11 13:58 keltezéssel, Peter Verhas írta:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">A következő kis mintapéldában: <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">public class WhyFinal {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>interface Outer {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>String method();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>public Outer method(final String s) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>class Inner implements Outer {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>public String method() {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>return s &#43; &quot; wonka&quot;;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>return new Inner();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>public static void main(String[] args) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>System.out.println(new WhyFinal().method(&quot;bonka&quot;).method());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"></span>}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">miért kell, hogy a 'String s' argumentum final legyen?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span class="apple-style-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 class="apple-style-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 class="apple-style-span"><a href="mailto:peter@verhas.com">peter@verhas.com</a></span><br>
</span><span class="apple-style-span"><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#888888">&#43;36(30)9306805</span></span><span style="font-size:13.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><br>
</span><span class="apple-style-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;"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span style="font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;"><o:p>&nbsp;</o:p></span></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p>&nbsp;</o:p></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<p class="MsoNormal"><br>
<br>
<br>
<o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Javalist mailing list<o:p></o:p></pre>
<pre><a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><o:p></o:p></pre>
<pre><a href="http://lists.javaforum.hu/mailman/listinfo/javalist">http://lists.javaforum.hu/mailman/listinfo/javalist</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><br>
<br>
<br>
<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Varjasi Norbert&nbsp;&nbsp;&nbsp;&nbsp; <a href="mailto:varjasin@sze.hu">varjasin@sze.hu</a><o:p></o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
<pre><o:p>&nbsp;</o:p></pre>
</div>
</P></DIV></BODY></HTML>