尝试从 hashmap 获取值时在 eclipse 中出现 sonarlint 错误
Getting sonarlint error in eclipse while trying to get value from hashmap
我在尝试从 hashmap 获取值时收到类似 “在访问值之前调用“Optional#isPresent()””这样的错误。
代码:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().get();
请给我一个解决这个问题的方法,谢谢
findFirst
returns 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
}
您可以使用 .orElse(null)
而不是 .get()
因此您的代码变为:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().orElse(null);
我在尝试从 hashmap 获取值时收到类似 “在访问值之前调用“Optional#isPresent()””这样的错误。
代码:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().get();
请给我一个解决这个问题的方法,谢谢
findFirst
returns 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
}
您可以使用 .orElse(null)
.get()
因此您的代码变为:
String promolevelname = eventCampiagnResponseObj.getEventCampMap().get(Integer.valueOf(sceobj[18].toString())).keySet().stream().findFirst().orElse(null);