在尝试从哈希映射中获取值时,我遇到了诸如“在访问值之前调用“Optional#isPresent()”之类的错误。
代码:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().get();
请给我一个解决这个问题的方法,谢谢
在尝试从哈希映射中获取值时,我遇到了诸如“在访问值之前调用“Optional#isPresent()”之类的错误。
代码:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().get();
请给我一个解决这个问题的方法,谢谢
而不是.get()
你可以使用.orElse(null)
所以你的代码变成:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().orElse(null);
findFirst
返回,但如果没有价值Optional
,它会抛出。NoSuchElementException
因此,您需要检查是否存在值。
Optional<String> value = obj.getOptional()
if (value.isPresent()) {
value.get();
}
在您的情况下,它应该如下所示:
Optional<String> optionalValue = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst();
if (optionalValue .isPresent()) {
String promolevelname = optionalValue.get();
}
它表明代码行
eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst()
正在返回一个 Optional 对象,您应该检查它是否不是“null”,然后才对其执行 get()。
一种可能的解决方案是:
Optional<String> promolevelnameOpt = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().get();
if (promolevelnameOpt.isPresent()) {
promolevelname = promolevelnameOpt.get();
} else {
// promolevelnameOpt contains null
}