[Javalist] generics kérdés

Richard O. Legendi richard.legendi at gmail.com
2012. Jún. 8., P, 14:56:11 CEST


Gyors comment, a multiple boundsnak ebben az esetben semmi értelme:

<? extends FactoryManaged & Object>

Ez ugye úgy működik, hogy T1 & ... & TN-nek mind meg kell felelnie az 
adott típusnak, viszont az *első* (azaz T1) típust használja erasure-höz 
a fordító.

Arra jó, ha több interfészt is meg akarsz kötni egyszerre, illetve 
valóban van ilyen jellegű használata, ahol az Object szóba kerülhet, de 
abban az esetben ez így nézne ki:

<T extends Object & FactoryManaged>

Erre bináris kompatibilitás miatt van szükség: ha van pl. egy nem 
generic legacy függvényed, ami Objectet ad vissza, amiből szeretnél 
genericeset csinálni, viszont nem akarod az összes kliens kódot 
újrafordítani, akkor azt kizárólag így teheted meg.

Példának ld. a min()/max() definícióját a Collections-ben (ott Objectet 
kell visszaadni, mert régen úgy működött, viszont ha T == Comparable 
lenne, akkor azt adna vissza).

Ricsi

On 2012.06.08. 14:17, István Székely wrote:
> Hali,
>
> Bár már kaptál választ, olyan lehetne még, hogy <? extends 
> FactoryManaged & Object> vagy valami hasonló konstrukció.
>
> Az alapvető probléma az egyébként, hogy a Sun nem vezetett be külön <? 
> implements FactoryManaged> szintaxist, de tulajdonképpen ez nem is 
> annyira kell neked, mint láttuk.
>
> Üdv,
> Stivi
>
>
> On 2012-06-08 13:28, Peter Verhas wrote:
>> Igen ez jó. Kösz.
>>
>> --
>> Verhás Péter
>> peter at verhas.com <mailto:peter at verhas.com>
>> +36(30)9306805
>> skype: verhas
>>
>>
>>
>>
>> On 2012.06.08., at 11:53, Richard O. Legendi wrote:
>>
>>> 2) Első blikkre:
>>>
>>>     public <T extends FactoryManaged> void create(Class<T> interfAce,
>>>             Class<? extends T> klass);
>>>
>>> Ricsi
>>
>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20120608/e3634200/attachment.html>


További információk a(z) Javalist levelezőlistáról