在编程中我们会经常遇到空指针异常问题,如何解决这个问题?JDK1.8新特性Optional类可以解决这个问题,使用Optional从对象中获取数据时可以避免空指针异常。
public class Settlement {
private Integer price;
private String currency;
public String getCurrency() {
return currency;
}
}
public class DemoOne {
public String getCurrency(Settlement settlement) {
return settlement.getCurrency();
}
public static void main(String[] args) {
Settlement settlement = null;
DemoOne demoOne = new DemoOne();
System.out.println(demoOne.getCurrency(settlement));
}
}
运行结果:
Exception in thread “main” java.lang.NullPointerException
at com.test.DemoOne.getCurrency(DemoOne.java:14)
at com.test.DemoOne.main(DemoOne.java:20)
public class DemoOne {
public String getCurrency(Settlement settlement) {
return Optional.ofNullable(settlement).map(p -> p.getCurrency()).orElse("unfind");
}
public static void main(String[] args) {
Settlement settlement = null;
DemoOne demoOne = new DemoOne();
System.out.println(demoOne.getCurrency(settlement));
}
}
运行结果:unfind
public class DemoTwo {
public String getCurrencyTwo(Settlement settlement) {
return Optional.ofNullable(settlement).map(Settlement::getCurrency).orElse("unfind");
}
public static void main(String[] args) {
Settlement settlement = null;
DemoTwo demoTwo = new DemoTwo();
System.out.println(demoTwo.getCurrencyTwo(settlement));
}
}
运行结果:unfind