检查空指针后出现空指针异常

时间:2014-05-03 11:28:56

标签: java nullpointerexception

我得到一个空指针异常,尽管先用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;}
        }

    });

为什么此检查不起作用?有没有办法解决这个问题?

3 个答案:

答案 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;
                }
                ...