场景
我们经常会碰到以下场景:
有A,B两个自定义类,A类对象有个selectB()方法,返回B对象,可能为空,于是每次在引用该对象时,都可能需要做空判断
if(b != null) //执行某段代码
else //执行对象为空时的特殊操作
这看起来有点烦人!有什么优雅的解决方案吗?
有的,用最基本的多态就可以解决。
提示:如果你比较了解java多态性,建议直接看代码
一、什么是多态?
多态是同一个行为具有多个不同表现形式或形态的能力,简单来说,在java里,接口的多种不同的实现方式即为多态的一种表现。
在下面的例子里,将B定义为接口,然后使对空的处理作为B的一种表现形态。
二、直接上代码
将B类定义为interface
interface B {
void execute();
}
根据java多态性,返回不同结果
class A {
public B selectB(){
if(/*B是否存在?*/)
return () -> System.out.println("b存在,可以执行b对象的方法");
else
return () -> System.out.println("b不存在,做特殊处理");
}
这样在引用时就不会抛出NullPointerException了。
public static void main(String[] args) {
new A().selectB().execute();
}