Nickkk:
El siguiente código genera una advertencia Unchecked cast: 'T' to 'U'
en IntelliJ IDEA:
interface A {}
class B<T extends A, U extends A> {
void f() {
final T t = null;
final U u = (U) t;
}
}
Esto no tiene sentido para mí, puesto T
y U
se definen como el mismo tipo. ¿Cuál es el problema?
Eran :
T
y U
no se definen como del mismo tipo. Ambos se definen como extends A
, cuyos medios T
y U
pueden ser clases no relacionadas que implementan la A
interfaz. De ahí que el reparto no es seguro.
El reparto sólo es seguro que puede hacer es para echar las referencias de tipo T
o U
para escribir A
. Por supuesto que no es necesario un reparto tan. Simplemente les puede asignar a una variable de tipo A
.