我得到一个空指针异常,尽管先用if语句检查该值是否为null。这是我的代码:
Collections.sort(taskList,new Comparator<Task>(){ //here is one NPE
@Override
public int compare(Item t1,Item t2){
if((t1.getAssignedString()!=null)&&(t2.getAssignedString()!=null)){ //here is second NPE
int x=t1.getAssignedString().compareTo(t2.getAssignedString());
if(x!=0){return x;}
else{
Integer x1=(int)(4*(((Task)t1).getAllottedTime()));
Integer x2=(int)(4*(((Task)t2).getAllottedTime()));
return x1.compareTo(x2);
}
}
else{System.out.println("null value");
return 0;}
}
});
为什么此检查不起作用?有没有办法解决这个问题?
答案 0 :(得分:1)
您正在检查t1.getAssignedString()
是否为null
,您需要检查t1!=null
。
对于t2
的情况。
答案 1 :(得分:0)
我猜你需要检查实际的实例是否为空,比如taskList和比较时的各个Item实例(t1和t2)。
答案 2 :(得分:0)
在使用t1和t2之前,您应该测试t1或t2是否必须为空
Collections.sort(taskList,new Comparator<Task>(){ //here is one NPE
@Override
public int compare(Item t1,Item t2){
if(t1==null || t2==null){
return 0;
}
...