[Javalist] Annotáció probléma
Richard O. Legendi
richard.legendi at gmail.com
2013. Nov. 20., Sze, 13:32:54 CET
No figy:
Override a2 = zz2.getAnnotation(Override.class); // EZ NEM FORDUL LE
Miért? Azért, amiért ezt sem írhatod:
String s = new Object(); //:-)
Így valahogy mennie kéne viszont:
Annotation a2 = zz2.getAnnotation(Override.class);
És ha te tudod, hogy az valójában egy Override, castolhatod.
A fenti módon annyit lát a getAnnotation()-nél, hogy az ott egy ?
extends Annotation. Tehát annotation.
A generics amúgy egy olyan dolog szerintem, amit a 8 emberen kívül, akik
dolgoztak a proposalon, szerintem a világon senki sem ért igazán :-)
Ajánlom mindenképp a Java Generics FAQ átfutását, ahol hasonló
gubancokbol nagyon sokat lehet tanulni:
http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.pdf
Az egyetlen gond vele, hogy 300 oldal -- és ez csak a *gyakran*
előfordulő kérdések...
Ricsi
On 2013.11.20. 13:21, József Keresztes wrote:
> Na szóval értem hogy ezesetben zz1 típusa Class<Object>, a zz2 pedig
> Class<?>
> De hogy függ össze ez a getAnnotation() metódussal ?
> Nem világos...
>
> Class<Object> zz1 = Object.class;
> Class zz2 = Object.class; // Class<?> a típus
> Override a1 = zz1.getAnnotation(Override.class); // ez lefordul
> Override a2 = zz2.getAnnotation(Override.class); // EZ NEM FORDUL LE
>
>
>
> 2013. november 20. 13:04 Richard O. Legendi írta,
> <richard.legendi at gmail.com <mailto:richard.legendi at gmail.com>>:
>
> Tipp: mert a cls Class<?> típusú. Írd át a konkrét típusra a ?-et.
>
> Ricsi
>
>
> On 2013.11.20. 12 <tel:2013.11.20.%2012>:28, József Keresztes wrote:
>>
>> Sziasztok !
>>
>> Valamit nagyon nem értek, persze lehet hogy a fától nem látom az
>> erdőt :)
>> Van egy annotációm, a neve View. Amikor egy osztálynál vizsgálom
>> hogy el van-e látva ezzel az annotációval,
>> kell egy "számomra értelmetlen" cast, különben a kód nem fordul le.
>> Ha ugyanezt egy Field-nél vizsgálom, nem kell cast-olni. Az
>> osztálynál miért kell ???
>> Egyébként a dolog annotáció független, más annotációval is a
>> helyzet ugyanez.
>>
>>
>> Class cls = ...;
>> Field field = cls.getField(...);
>>
>> View view = (View)cls.getAnnotation(View.class); //??? mért kell
>> cast ???
>> View view2 = field.getAnnotation(View.class);
>>
>> Dokumentáció szerint a Class osztály getAnnotation() metódusa:
>>
>> public <A extends Annotation> A getAnnotation(Class<A>
>> annotationClass)
>>
>> Dokumentáció szerint a Field osztály getAnnotation() metódusa:
>>
>> public <T extends Annotation> T getAnnotation(Class<T>
>> annotationClass)
>>
>>
>> Üdv, Joe
>>
>>
>>
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu <mailto:Javalist at lists.javaforum.hu>
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu <mailto: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
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20131120/adc62d0f/attachment.html>
További információk a(z) Javalist levelezőlistáról