我有一个CreateOrder实例,其中包含一些String,Integer和Double状态.当我在JUnit测试中为CreateOrder创建一个对象并将其发送时,我能够使用Optional API验证String属性而不是Integer,如下所示 –
String aoid = Optional.ofNullable(createOrder.getAltorderid()).orElse("");
int quantity = Integer.parseInt(each.getQty());
double amount = Double.parseDouble(each.getPrice().getAmount());
就像aoid一样,我也希望用户使用整数()来表示整数,但是无法弄清楚如何.我这背后的意图是使我的代码从NullPointerExceptions安全,因此我想让Integer和Double的强大的可选用户.我是Java 8的新手,如果我应该使用OptionalInt或Optional< Integer>?如果可选<整数>,如何使用它像我用于String?
最佳答案
Integer.parseInt(each.getQty())
因为如果each.getQty为null,你最终会得到一个NumberFormatException,当你试图将String解析为Integer并且不确定它时,它应该是行为.
另一方面,对于null为null的值,您可以默认为0:
int quantity = Optional.ofNullable(each.getQty())
.map(Integer::parseInt)
.orElse(0);
类似于金额
double amount = Optional.ofNullable(each.getPrice().getAmount())
.map(Double::parseDouble)
.orElse(Double.NaN);