[Javalist] instanceof subtype probléma

Peter Verhas peter at verhas.com
2013. Feb. 15., P, 19:04:32 CET


Igazad van, Bence, csak éppen azt mondta, hogy szeretné megfogni a tüzes vasat szabad kézzel, én meg javasoltam neki valami kenőcsöt utánára. De tényleg jobb, ha nem fogdosod. Valentin nap elmúlt.

--
Verhás Péter
peter at verhas.com
+36(30)9306805
skype: verhas




On 2013.02.15., at 17:44, coder at gmail.hu wrote:

> Hali!
> 
>  
> Én békénhagynám azt a ClassCastException -t, ugyanis - már amennyire nekem most ez lejön a kódból; pláne, így műszak végén :) - itt az a hunyó, aki Object mögé bújva nem megfelelő típusú példányt ad neked valahonnan (nem tudom, honnan jöhet az az Object kupac - nem lehet véletlenül ő is Collection<T> ?).
> 
> Innen nézve egy picit concerning, hogy Object típust kell valamire használni.
> 
> Ignore me if I've missed the point.
> 
>  
> Üdv.: Bence
> 
>  
> On Fri, 15 Feb 2013 09:57:32 +0100, Keresztes Jozsef wrote:
> 
>> Sziasztok !
>> 
>> A problémám a következő: 
>> Van egy interface-em:
>> 
>> public interface Predicate {
>>   public boolean match(T candidate);
>> }
>> 
>> És egy másik oszály query() metódusa pedig vár egy ilyen Predicate objektumot.
>> 
>> public  List query(Predicate 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

--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130215/6ce690d9/attachment.html>


További információk a(z) Javalist levelezőlistáról