[Javalist] miért kell final

Vig, Balázs balazs.vig at datasolutions.hu
2012. Sze. 11., K, 15:02:40 CEST


Hát mert ez a szabály: local inner class láthatja az outer class
memberjeit, de nem láthatja a metódus lokális változóit. Azok csak a
stack-ban léteznek (a metódus futásának idejéig), de a local inner class
túlélheti a metódust: te is visszaadsz egy példányt.
Forrás:
http://www.amazon.com/SCJP-Certified-Programmer-Java-310-065/dp/0071591060

Szerintem a final segítségével tudja a VM átlépni ezt a határt: annak
értéke nem változhat meg, tehát a belső osztály létrehozásakor annak
értéket "beégetheti". Mintha ilyesmit csinálnál (a szintaxis nem feltétlen
jó):


public class WhyFinal {
interface Outer {
String method();
}

       private class defaultOuter implements Outer{
           private final String s;
           public defaultOuter(String s){
               this.s = s;
           }
       }


public Outer method(String s) {
class Inner extends defaultOuter {
public String method() {
return s + " wonka";
}
}
return new Inner(s);
}

public static void main(String[] args) {
System.out.println(new WhyFinal().method("bonka").method());
}
}



Üdv:
*Vig Balázs
*



2012/9/11 Peter Verhas <peter at verhas.com>

> A következő kis mintapéldában:
>
> public class WhyFinal {
> interface Outer {
> String method();
> }
>
> public Outer method(final String s) {
> class Inner implements Outer {
> public String method() {
> return s + " wonka";
> }
> }
> return new Inner();
> }
>
> public static void main(String[] args) {
> System.out.println(new WhyFinal().method("bonka").method());
> }
> }
>
> miért kell, hogy a 'String s' argumentum final legyen?
>
> --
> Verhás Péter
> peter at verhas.com
> +36(30)9306805
> skype: verhas
>
>
>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20120911/6b942a56/attachment.html>


További információk a(z) Javalist levelezőlistáról