我在尝试从任何数组(封装在Vector中)中获取字符串时,一直收到NullPointerException。我似乎无法阻止错误的发生。它必须是简单的东西,但我认为我已经看了太长时间,我可以肯定使用另一组眼睛。这是我的代码:
Vector<Event> details = vector.get(i).getEvent();
for (int x = 0; x < details.size(); x++) {
Event eDetails = details.get(x);
person = eDetails.getEventPerson();
place = eDetails.getEventPlace()[0];
time = eDetails.getEventTime()[0];
}
因此,当我尝试从eDetails.getEventTime返回的数组中的位置0(当x为0时)时,会抛出NullPointerException。
现在,当x为0时,我碰巧知道getEventTime()数组的位置0处的数组元素是空字符串,但它不是空值。当x为1或2等时,我可以很好地检索时间。
问题是当我尝试执行以下操作时仍会收到NullPointerException:
**System.out.println(eDetails.getEventTime.length);**
or
String result;
**if(eDetails.getEventTime[0] == null){**
result = "";
} else {
result = eDetails.getEventTime[0];
}
有什么想法吗?
谢谢!
答案 0 :(得分:2)
你确定在你的第二个例子中,它不应该是:
if(eDetails.getEventTime() == null)
而不是:
if(eDetails.getEventTime[0] == null)
在进行空检查时,您确定要关闭[0]
吗?
如果函数eDetails.getEventTime()
返回null
,那么当您尝试NullPointerException
时,您将获得eDetails.getEventTime()[0];
答案 1 :(得分:1)
似乎当你得到details.get(0).getEventTime()
时返回的数组为空。
答案 2 :(得分:0)
解决这个问题的最简单方法是:
Vector<Event> details = vector.get(i).getEvent();
for (int x = 0; x < details.size(); x++) {
Event eDetails = details.get(x);
if (eDetails == null) {
throw new NullPointerException("eDetails on pos " + x + " is null");
}
person = eDetails.getEventPerson();
Something[] places = Details.getEventPlace();
if (places == null) {
throw ....
}
place = eDetails.getEventPlace()[0];
Something[] times = eDetails.getEventTime();
if (times == null) {
throw ....
}
time = eDetails.getEventTime()[0];
}
它可能看起来不太好但至少它提供了丰富的信息。