我们假设我们有一个这样的类:
class Check{
private int ammount;
public Check(){
//Notice default empty builder
}
//Setters and getters
现在,我们如何在为原始数据类型调用getter时阻止NullPointerExceptions?
//We cannot do this
...
if (myCheck.getAmmount() == null){
....
}
那么,我们怎样才能防止这种情况发生NullPointerException?
答案 0 :(得分:3)
原始类型不能为空。因此,返回原始类型的方法不能返回null。
答案 1 :(得分:0)
原始数据类型首先不可能有NullPointerException
。没有什么可以阻止的。
答案 2 :(得分:0)
像“int”,“boolean”,“float”,“double”这样的原语不能为空。你指的是“整数”,“浮动”,“双重”吗?
答案 3 :(得分:0)
如果NullPointerException
从未初始化或专门设置为myCheck.getAmount()
,则只有在调用myCheck
时才能获得null
。在Optional中包装myCheck
,因此您的消费者必须对其进行无效检查。
通过阅读您的注释,您可能希望将int值的可能为空的包装器转换为String,因此我建议:
Optional.ofNullable(check).map(c -> String.valueOf(check.getAmount())).orElse("")
答案 4 :(得分:0)
您必须阅读所有问题,对于原始类型,结论不为空,它们具有 默认值 ,但是!不要误解诸如
之类的原语int,double,char,byte,
使用类,例如
字符串,整数,双重 ..
那些可以返回 null 给你。 在这种情况下,我建议您在此处阅读所有可能的答案What is a NullPointerException, and how do I fix it?