[Javalist] instanceof subtype probléma
Gábor Garami
gabor.garami at hron.me
2013. Feb. 15., P, 10:07:53 CET
<T extends Foo> ?
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>:
> 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
További információk a(z) Javalist levelezőlistáról