No he visto esta pregunta exacta aquí, lo que me sorprende.¿Por qué no puedo lanzar un objeto dentro de una declaración if?
Lo siguiente no se compilará:
public int compareTo(Object o)
{
if (this.order < ((Category o).order))
{
return -1;
}
else if (this.order > ((Category o).order))
{
return 1;
}
else
{
return 0;
}
}
mientras que cambiar esto a emitir el objeto y almacenar su referencia en un nuevo objeto fuera de la sentencia condicional corrige el problema:
Category cat = (Category)o;
if (this.order < cat.order)
// Etc...
Mi pregunta es, ¿por qué no se permite este comportamiento en Java? (Java 5 específicamente)
EDITAR: ¡Ajá! Gracias a todos. Darn IDEs modernos dando mensajes de error vagos. Empecé a descontarlos, lo que no me sirvió de nada esta vez. (Netbeans me estaba advirtiendo sobre un paréntesis faltante y un punto y coma faltante ...)
if (this.order <((Category) o) .order) – Joel
There * is * a missing paréntesis. – EJP
@EJP Correcto, pero no falta el punto y coma. Esa fue la evidencia de que debería haberle prestado atención, pero también de que esos mensajes pueden ser poco convincentes. – BlackVegetable