我还没有看到这个确切的问题,这让我感到惊讶。为什么我不能在if语句内部投射对象?
以下不会编译:
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;
}
}
而改变这一投的对象,并存储其引用的条件语句之外的新对象修复该问题:
Category cat = (Category)o;
if (this.order < cat.order)
// Etc...
我的问题是,为什么在Java中不允许这种行为? (Java 5专门)
编辑:啊哈!谢谢你们。为现代IDE提供模糊的错误消息。我已经开始打折了,这次对我没有任何好处。 (Netbeans警告我缺少括号和缺少分号......)
if(this.order <((Category)o).order) – Joel 2012-07-31 17:02:45
*有*缺少括号。 – EJP 2012-07-31 23:23:10
@EJP对,但没有缺少分号。这既是我应该关注它的证据,也是这些信息可能不可靠的证据。 – BlackVegetable 2012-08-01 14:13:55