[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