Ahoj,

co parametrizovat i HVisitable a teprve v okamziku, kdy budu implementovat 
rozhrani HVisitable tak reknu jakym typem
(velmi pravdepodobne sam sebou):

public interface HVisitable<E extends HVisitable> {
        boolean accept(HVisitor<E> visitor);
}


public class HVisitableImpl implements HVisitable<HVisitableImpl> {
        ...
}

Jirka

Lukáš Zapletal napsal(a):
> Zdravim,
> 
> mam jeden problemek ohldedne parametrizace objektu. Predstavme si
> nasledujici situaci klasickeho hiearchickeho visitor patternu:
> 
> public interface HVisitor<E extends HVisitable> {
>       
>       boolean visitEnter(E node); // going into a branch
> 
>       boolean visitLeave(E node); // coming out
> 
>       boolean visit(E node);
>       
> }
> 
> public interface HVisitable {
>       boolean accept(HVisitor visitor);
> }
> 
> Rozhrani HVisitor je parametrizovano, aby programator pouhou deklaraci
> typu E mohl implementovat primo metody pracujici s danym typem a
> nemusel by pretypovavat. Problem je u rozhrani HVisitable, kde me
> prekladac u metody accept varuje, ze by mela byt parametrizovana. No
> to da rozum, ovsem ja nemohu prijit na to, jak ji parametrizovat.
> Ackoli je kod funkcni, ta varovani mi vrtaji hlavou. Potreboval bych
> dat programatorovi moznost specifikovat visitable typ parametrem, ale
> vznika tam "cyklus", protoze HVisitor ve sve deklaraci pouziva
> HVisitable.
> 
> Mam takovy pocit, ze v reseni budou hrat hlavni roli parametricke zoliky :-)
> 
> Diky za nakopnuti
> 

-- 
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic

Odpovedet emailem