Diky. Mam tedy dve reseni:
A)
public interface HVisitable {
boolean accept(HVisitor<HVisitable> visitor);
}
public interface HVisitor<E extends HVisitable> {
boolean visitEnter(E node);
boolean visitLeave(E node);
boolean visit(E node);
}
B)
public interface HVisitable<E extends HVisitable<E>> {
boolean accept(HVisitor<E> visitor);
}
public interface HVisitor<E extends HVisitable> { ****
boolean visitEnter(E node);
boolean visitLeave(E node);
boolean visit(E node);
}
**** - Zde je nutne opet pridat GT, ovsem nejsem si jist jaky. Zvolil
jsem tedy reseni A) :-)
LZ
2008/11/11 Podlesak Kamil <[EMAIL PROTECTED]>:
>
> Chybicka se vloudila, ma tam byt:
>
> boolean accept(HVisitor<E> visitor);
>
> Pak uz to cele funguje.
> Je pravda, ze provazana parametrizace na urovni vsechn trid je mozna
> overkill, spatne se to udrzuje pohromade.
> Casto je jednodussi pouzivat spise parametrizovane metody a hodne ? extends,
> kde to jde.
>
> Kamil Podlesak
>
>> -----Original Message-----
>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
>> Behalf Of Lukás Zapletal
>> Sent: Tuesday, November 11, 2008 9:27 AM
>> To: Java
>> Subject: Re: Parametrizace Visitor-Visitable
>>
>>
>> Muzete to rozvest a uvest plny kod pro obe tridy? Protoze ja se
>> nechytam a porad to ne a ne napsat, aniz by kompilatoru neco vadilo.
>> Kdyz modifikuji Visitable, tak je problem u Visitora a naopak. Navic
>> se mi pak nedari vytvorit zadneho potomka. Napriklad:
>>
>> public interface HVisitable<E extends HVisitable<E>> {
>>
>> boolean accept(E visitor);
>>
>> }
>>
>> jak by mel byt potomek?
>>
>> public abstract class HDefaultNodeVisitable implements
>> HVisitable<HDefaultNodeVisitable> {
>>
>> @Override
>> public boolean accept(HDefaultNodeVisitable visitor) {
>> . ....
>> }}
>>
>> To fungovat nebude, protoze metoda accept musi mit jako parametr
>> Visitora a ne Visitable rozhrani.
>>
>> Diky LZ
>>
>>
>> --
>> Lukas Zapletal
>> http://lukas.zapletalovi.com
>>
>
--
Lukas Zapletal
http://lukas.zapletalovi.com