[Javalist] Generics kerdes
Richard O. Legendi
richard.legendi at gmail.com
2012. Május. 9., Sze, 11:13:26 CEST
> bar a kod kicsit kusza, mivel gondolom valami html szuro kivette a <>
> kozti reszt. De logikus hogy nem fog menni.
Az Java 7 tippre.
Ricsi
On 2012.05.09. 11:12, János Háber wrote:
> bar a kod kicsit kusza, mivel gondolom valami html szuro kivette a<>
> kozti reszt. De logikus hogy nem fog menni.
>
> D tipust varsz vissza ami kiterjeszti DAOB<P>,t theat abbolszarmazik,
> viszont pelda nyosiraskor "csak" DAOB<P>-t csinalsz (ami "kevesebb"
> mint D)
>
> Tehat minden D -> DAOB<P> de nem minden DAOB<P> D
> :DDD
>
> Ezert nem tudsz DAOB<P>-t returnolni ott ahol D-t varsz.
>
>
>
> On Wed, May 9, 2012 at 10:56 AM, zamek<zamek at vili.pmmf.hu> wrote:
>> hello,
>>
>> Kicsit beletekeredtem a generics-be :(
>>
>> Csinaltam egy kivonatot, hogy egyben latsszon a problema.
>>
>> Van egy POJO hierarchia, amit egy Dao hierarchia tud feldolgozni. Ehhez
>> szeretnek egy factory hierarchiat is csinalni. Minden ok, kiveve a
>> DAOBFactory-t, aminel a fordito hibat dob.
>>
>> Van valakinek otlete, hogy lehet megoldani ezt?
>>
>>
>> itt a kod:
>>
>> import java.util.Map;
>>
>> public class Q {
>>
>> interface POJO { int asd(); }
>>
>> abstract class AbstractPOJO implements POJO { }
>>
>> class POJOA extends AbstractPOJO {
>> @Override public int asd() { return 1; }
>> public int pojoAValue() { return 1; }
>> }
>>
>> class POJOB extends AbstractPOJO {
>> @Override public int asd() { return 2; }
>> public int pojoBValue() { return 2; }
>> }
>>
>> class POJOC extends POJOB {
>> @Override public int asd() { return 3; }
>> public int pojoCValue() { return 3; }
>> }
>>
>> interface DAO<P extends POJO> {
>> P getPojo();
>> void setPojo(P pojo);
>> void update();
>> }
>>
>> abstract class AbstractDAO<P extends POJO> implements DAO<P> {
>> P pojo;
>> @Override public P getPojo() { return this.pojo; }
>> @Override public void setPojo(P pojo) { this.pojo = pojo; }
>> }
>>
>> class DAOA<P extends POJOA> extends AbstractDAO<P> {
>>
>> @Override
>> public void update() {
>> System.out.println(String.format("in daoa pojoa value is %d",
>> this.getPojo().pojoAValue())); //$NON-NLS-1$
>> }
>>
>> }
>>
>> class DAOB<P extends POJOB> extends AbstractDAO<P> {
>> @Override
>> public void update() {
>> System.out.println(String.format("in daob pojob value is %d",
>> this.getPojo().pojoBValue())); //$NON-NLS-1$
>> }
>> }
>>
>> class DAOC<P extends POJOC> extends DAOB<P> {
>> @Override
>> public void update() {
>> System.out.println(String.format("in daoa pojoc value is %d",
>> this.getPojo().pojoCValue())); //$NON-NLS-1$
>> }
>> }
>>
>> abstract class AbstractFactory<T> {
>> T target;
>> abstract T createTarget(Node n);
>> T getTarget() { return this.target; }
>> void processParam(Node n) { }
>> }
>>
>> abstract class AbstractDaoFactory<D extends AbstractDAO<P>, P extends
>> POJO> extends AbstractFactory<D> { }
>>
>> class DAOAFactory extends AbstractDaoFactory<DAOA<POJOA>, POJOA> {
>> @Override DAOA<POJOA> createTarget(Node n) { return new DAOA<>(); }
>> }
>>
>> class DAOBFactory<D extends DAOB<P>, P extends POJOB> extends
>> AbstractDaoFactory<D, P> {
>>
>> @Override D createTarget(Node n) { return return new DAOB<>(); } //
>> Type mismatch: cannot convert from Q.DAOB<Q.POJOB> to D
>> }
>> -------------------------------------------------------------------------------------------------^
>>
>> class DAOCFactory extends DAOBFactory<DAOC<POJOC>, POJOC> {
>> @Override DAOC<POJOC> createTarget(Node n) { return new DAOC<>();
>> }
>> }
>>
>> class Store {
>> private Map<String, DAO<? extends POJO>> store;
>>
>> public Store() {
>> DAOA<POJOA> daoa = new DAOA<>();
>> this.store.put("", daoa); //$NON-NLS-1$
>> }
>> }
>> }
>>
>> --
>> thx,
>> ----------------------------------
>> Zoltan Zidarics programmer
>> PTE-PMMFK H-7621 Pecs, Boszorkany u. 2. Hungary
>> E-Mail: zamek at vili.pmmf.hu
>> ----------------------------------
>>
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
További információk a(z) Javalist levelezőlistáról