Eclipse afferma che l'operazione instanceof non è consentita con Type Parameter a causa del tipo generico gomma.Perché "t instanceof T" non è ammesso dove T è un parametro di tipo e t è una variabile?
Sono d'accordo che in fase di runtime, nessun tipo di informazione rimane. Ma si consideri la seguente dichiarazione generica di classe:
class SomeClass<T>{
T t;
SomeClass(Object o){
System.out.println(o instanceof T); // Illegal
}
}
In fase di esecuzione, senza T sarebbe stato presente! Ma se istanzio questa classe di tipo Integer, allora l'oggetto corrispondente avrà un campo t di tipo Integer.
Quindi, perché non riesco a controllare il tipo di una variabile con T che può essere sostituita da Integer in fase di esecuzione. E in realtà farei qualcosa come "o instanceof Integer".
In quali casi, consentire l'istanza di un parametro di tipo può causare problemi in modo che sia vietato?
Hai già detto "Al momento dell'esecuzione, non sarebbe presente T", quindi sembra che tu sia già a conoscenza della cancellazione di tipo * *. Quindi non sono sicuro del motivo per cui sei confuso da questo comportamento? –
Solo perché non consentito non significa che può causare il rublo. T è un tipo generico e può infatti essere qualsiasi cosa, usando l'istanza di appena fatto ha senso. – Peter
possibile duplicato di [Java: Instanceof e Generics] (http://stackoverflow.com/questions/1570073/java-instanceof-and-generics) – millimoose