Podle mne je problém v DaoA<? extends A> dao = new DaoB(); - tam dochází ke 
zbytečnému zobecnění, protože pro takto nadeklarovanou referenci dao už 
překladač neví, že na ní smí volat jen doSomething(B). 
Podle názvů tříd to na mě působí dojmem, že A je nějaký předek doménových 
objektů a chcete vytvořit generické DAO - viz odkazy na první stránce 
http://www.google.cz/search?q=generic+dao

Tomáš Záluský


================================================
...with Ultimate flying is so easy...
http://www.frisbee.cz    http://www.peaceegg.net
================================================





______________________________________________________________
> Od: "Martin Beranek" <[email protected]>
> Komu: [email protected]
> Datum: 25.11.2010 08:26
> Předmět: Re: generika a '? extends Xxx'
>
>Tak si trošku odpovím sám. Je třeba použít T<? super B>, ale neřeší to
>můj problém...
>
>private class A {}
>
>private class B extends A {}
>       
>private abstract class DaoA<T extends A> {
>    void doSomething(T param) {}
>}
>
>private class DaoB extends DaoA<B> {}
>
>a pak potrebuji
>
>DaoA<? extends A> dao = new DaoB();
>dao.doSomething(new B()); // nejde přeložit
>
>
>
>Dne 25.11.2010 08:06, Martin Beranek napsal(a):
>> Zdravím,
>> 
>> proč toto nefunguje?
>> 
>> private class B {}
>>      
>> private class Test<T> {
>>     void doSomething(T param) {}
>> }
>> 
>> a nekde potrebuji
>> 
>> Test<? extends B> t = new Test<B>();
>> t.doSomething(new B()); // toto nelze zkompilovat
>> 
>> diky
>> 
>
>-- 
>Martin Beránek
>ICZ a.s., Pobočka Brno
>Londýnské náměstí 2/856, 639 00  Brno
>Tel.: +420 222 272 323
>Tel.: +420 222 272 111
>Fax.: +420 222 272 122
>mailto:[email protected]
>http://www.i.cz
>
>
>

Odpovedet emailem