after =>空指针

时间:2014-11-03 18:00:35

标签: java timestamp

我收到了这段代码,我正在尝试比较一个Timestamp数组:

Timestamp oldestTStamp = timeStamp[0];
boolean found = false; 
int temp = 0;
for (int j = 1; j<timeStamp.length; j++){  
    if(oldestTStamp == null && timeStamp[j] == null){}
    else if(oldestTStamp.after(timeStamp[j])){
        oldestTStamp = timeStamp[j];
        //Retrieve the oldest timestamp index in array
        found = true;
        temp = j; 
    }

这是我分配时间戳的方式:

timeStamp[index] = new Timestamp(System.currentTimeMillis()); 

3 个答案:

答案 0 :(得分:1)

您的if条件以相当奇怪的方式编写,并且仅检查Timestamp是否null。 你可能想写一些像

这样的东西
if (oldestTStamp != null && timeStamp[j] != null && oldestTStamp.after(timeStamp[j])) {
    ...

这样,after()方法只有在oldestTStamptimeStamp[j]都为非空时才会被调用。

答案 1 :(得分:1)

您应该添加异常的完整堆栈跟踪,否则只是猜测。

可能问题出在这一行:

 if(oldestTStamp == null && timeStamp[j] == null){}

应该是

 if(oldestTStamp == null || timeStamp[j] == null){}

答案 2 :(得分:0)

检查,

if( oldestTStamp != null &&
    timeStamp[j] != null &&
    oldestTStamp.after(timeStamp[j])){


}