[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