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 > > >
