he implementado esta función:Java: Desactivada fundido de X a Y/cómo implementar castOrNull
static <X,Y> Y castOrNull(X obj) {
try {
return (Y)obj;
}
catch(ClassCastException e) {
return null;
}
}
Esto me da la advertencia del compilador:
Type safety: Unchecked cast from X to Y
Qué no entiendo exactamente . ¿No es el try/catch
que estoy haciendo aquí un cheque para ello? ¿Puedo ignorar la advertencia?
¿Funcionará mi función como se espera o no? ¿Cómo lo implementaría correctamente?
También probé con un cheque obj instanceof Y
pero eso no funciona debido a la forma en que Java maneja los genéricos.
Por cierto, esta función me parece bastante útil (para hacer que otro código sea más limpio). Me pregunto si tal función ya puede existir en Java?
Un ejemplo donde yo quiero usarlo:
void removeEmptyRawStrings() {
for(Iterator<Entity> e = entities.iterator(); e.hasNext();) {
RawString s = castOrNull(e.next());
if(s != null && s.content.isEmpty()) e.remove();
}
}
tengo casos como estos muy a menudo en mi código. Y creo que esto es más fácil de leer y más simple que cualquier otra cosa. Pero por favor dame una mejor sugerencia si tienes alguna información sobre cómo hacer que ese código sea aún más simple.
Estaba pensando en esta advertencia hoy y si era posible tener un modelo verificado, pero no creo que puedas hacerlo. – DeliveryNinja