Ono se to moc nedela, ale obecne mi prijde jako rozumna praktika
deklarovat vsechno implicitne jako final, pokud neni konkretni duvod k
opaku.
Pavel
On 31/01/2008, Filip Jirsák <[EMAIL PROTECTED]> wrote:
> Zdravím,
> udělejte přesně to, co máte v té hlášce – deklarujte ty proměnné jako konečné.
>
> protected Object formBackingObject(HttpServletRequest request) throws
> Exception {
> final AA aa= new AA();
> List<BB> bbs = LazyList.decorate(new ArrayList(),
> …
>
> public Object create()
> final BB bb = new BB();
> …
>
> Bez toho kompilátor nemůže vědět,. že jméno aa nebo bb nemůže
> odkazovat na několik různých objektů, ale od inicializace odkazuje jen
> na jeden. Tudíž by pak nevědělo, kterou hodnotu má použít ve vnitřní
> třídě (jejíž kód může být spuštěn kdo ví kdy a v úplně jiném vlákně).
>
> Filip Jirsák
>
> 2008/1/31, Ivan Polák <[EMAIL PROTECTED]>:
> > zdravim konferenciu,
> >
> > mam takyto problem, neviete niekto poradit ako zmenit uvedeny zdrojak:
> >
> > protected Object formBackingObject(HttpServletRequest request) throws
> > Exception {
> >
> > AA aa= new AA();
> >
> > List<BB> bbs = LazyList.decorate(new ArrayList(),
> > new
> > org.apache.commons.collections.Factory() {
> >
> > public Object create()
> > {
> >
> > BB bb = new BB();
> >
> >
> > bb.setAA(aa);
> >
> > uvedeney zdrojak "produkuje" nalsedovnu chybu:
> >
> > local variable aa is accessed from within inner class; needs to be
> > declared final
> >
> > a
> >
> > local variable bb is accessed from within inner class; needs to be
> > declared final
> >
> > dakujem
> >
> > Ivan
> >
>
>
> --
> Filip Jirsák
> [EMAIL PROTECTED]
>