[Javalist] instanceof subtype probléma
Gábor Garami
gabor.garami at hron.me
2013. Feb. 15., P, 11:42:16 CET
Sracok, a <T extends Foo> nem matchel erre a problemara? Elvben ez azt
jelenti, hogy T es annak minden child classa.
Garami Gábor
E-mail: gabor.garami at hron.me
Tel: +36 20 235 9621
MSN: hrgy at vipmail.hu
Skype: hron84
2013/2/15 Keresztes Jozsef <jkeresztes at vati.hu>:
> István !
>
> Ez inkább egy hobby-projekt, itt nem kell a problémán azonnal túllendülni és haladni tovább.
> Inkább lehet elmélkedni rajta...
>
> Joe
>
> -----Original Message-----
> From: istvan.ketler at lhsystems.com [mailto:istvan.ketler at lhsystems.com]
> Sent: Friday, February 15, 2013 11:34 AM
> To: javalist at lists.javaforum.hu
> Subject: Re: [Javalist] instanceof subtype probléma
>
> Hát, lehet hogy akkor érdemesebb így leimplementálni és majd ha kész méréseket végezni (ha hetente/havonta egyszer és akkor is éjszaka fut az adott kód, nem lehet nagy baj a performance-szal), és ha szólnak majd a lassúság miatt akkor foglalkozni vele (pl. odaadni a class-t, mert ha erre egyébként módod van akkor miért ne). Ugye az "idő előtti optimalizálás" során máris eltöltöttél a problémával értékes perceket vagy órákat, amit így megtakaríthattál volna. :)
>
> Üdv
>
> Iván
>
>
> ______________________________
> István Ketler
> Senior Consultant
>
> Lufthansa Systems Hungária Kft.
> Development Center Pest
> Neumann János u. 1/e
> 1117 Budapest
> Hungary
> Phone: +36 1 887-2815
> Fax: +36 1 887-0577
> Mobile: +36 30 600-4936
> E-mail: istvan.ketler at LHsystems.com
> www.LHsystems.com
>
>
> -----Original Message-----
> From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of Keresztes Jozsef
> Sent: Friday, February 15, 2013 11:29 AM
> To: Java lista
> Subject: Re: [Javalist] instanceof subtype probléma
>
> Szia
>
> Igen a performance volt amire elsőre gondoltam, talán egy instanceof-hoz hasonló vizsgálat olcsóbb mint ami egy Exception keletkezésekor megtörténik.
>
> Joe
>
> -----Original Message-----
> From: istvan.ketler at lhsystems.com [mailto:istvan.ketler at lhsystems.com]
> Sent: Friday, February 15, 2013 11:17 AM
> To: javalist at lists.javaforum.hu
> Subject: Re: [Javalist] instanceof subtype probléma
>
> Szia,
>
> nem értem, miért nem opció hogy elfogod a ClassCastException-t és feldolgozod?
> Hiszen ha előtte ellenőrzöl, akkor is csak nagyjából az történik, hogy észreveszed hogy nem jó. Max performace spórolás hogy nem generál stacktrace-t?
>
> Az nem igaz, hogy minden információ ott van már. Ugye a T már nincs futásidőben, viszont esetleg a Predicate<T> interfésznek lehet egy
>
> boolean isInstance(Object obj);
>
> vagy
>
> boolean isAcceptableForMatch(Object obj);
>
> metódusa, amely megmondhatja hogy tud-e majd castolni. Persze ez függ attól hogy miként akartad implementálni, de nekem úgy tűnik hogy nem tudod megúszni azt hogy valahogy odaadd a class-t.
>
> Esetleg próbálkozhatsz a Class getGenericInterfaces és hasonló metódusaival, meg a Type, ParametrizedType interfészekkel, de ilyet soha nem csináltam, nem tudom mit lehet és mit nem. Igazából azt sem tudom mire jók, mert mintha a T-t adná vissza, nem pedig a tényleges futásidejű class-t, a T-vel pedig asszem nem sokra megy az ember. Majd egyszer ha lesz időm rá eljátszom vele.
>
> Üdv
>
> Iván
>
> ______________________________
> István Ketler
> Senior Consultant
>
> Lufthansa Systems Hungária Kft.
> Development Center Pest
> Neumann János u. 1/e
> 1117 Budapest
> Hungary
> Phone: +36 1 887-2815
> Fax: +36 1 887-0577
> Mobile: +36 30 600-4936
> E-mail: istvan.ketler at LHsystems.com
> www.LHsystems.com
>
> -----Original Message-----
> From: javalist-bounces at lists.javaforum.hu [mailto:javalist-bounces at lists.javaforum.hu] On Behalf Of Keresztes Jozsef
> Sent: Friday, February 15, 2013 9:58 AM
> To: javalist at lists.javaforum.hu
> Subject: [Javalist] instanceof subtype probléma
>
> Sziasztok !
>
> A problémám a következő:
> Van egy interface-em:
>
> public interface Predicate<T> {
> public boolean match(T candidate);
> }
>
> És egy másik oszály query() metódusa pedig vár egy ilyen Predicate objektumot.
>
> public <T> List<T> query(Predicate<T> predicate) {
> for (Object object: objects) {
> T t = (T)object; // itt nincs hiba
> predicate.match(t); // itt ClassCastException jöhet
> }
> ...
> }
>
> Ebben a másik osztályban van egy rakás Object, és szeretném meghívni a Predicate match() metódusát, de csak azokkal az objektumokkal amelyek megfelelnek T-nek !
> Persze rögtön az instanceof-ra gondolunk de azt nem lehet használni a subtype-ra.
> Ráadásul a "T t = (T)object;" sem ad hibát még futásidőben sem pedig az objektum nem felel meg T-nek.
> A futásidejű ClassCastException csak akkor jön ha a match() meghívódik.
> Szóval hogy lehetne megvizsgálni hogy egy objektum megfelel-e T típusnak és már a match()-nek át se adjam ?
> A primítív megoldás az lehet hogy igenis minden objektumot átadok a match()-nek és lekezelem egy try-blokkban a ClassCastException-t. Nincs jobb ?
>
> Joe
>
>
>
>
> _______________________________________________
> 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
>
>
> _______________________________________________
> 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
>
>
> _______________________________________________
> 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