我们编写了以下代码,这些代码不适用于Comparator比较方法.
public int compare(Object o1, Object o2)
{
if (o2 == null) return 1;
else if (o1 == null) return -1;
MailObject a = (MailObject)o1;
MailObject b = (MailObject)o2;
return a.getType() < b.getType()? 1 : -1;
}
Run Code Online (Sandbox Code Playgroud)
其中getType()方法返回一个整数值.以下代码工作正常
public int compare(Object o1, Object o2)
{
if (o2 == null) return 1;
else if (o1 == null) return -1;
MailObject a = (MailObject)o1;
MailObject b = (MailObject)o2;
return a.getType() - b.getType();
}
Run Code Online (Sandbox Code Playgroud)
如果我们在return语句中删除三元运算符,那么它工作正常.如果我们添加相同的检查,那么它也工作正常.为什么?
第一个代码块给出以下异常:
07:45:22 ERROR c.c.servlet.MyServlet …Run Code Online (Sandbox Code Playgroud)