利用java的多态性,优雅的避免NullPointerException!

本文通过实例说明如何利用Java多态性避免频繁的空对象检查,通过将B类定义为接口并提供不同实现,展示了如何在调用selectB()方法时自动处理空指针异常,提升代码可读性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


场景

我们经常会碰到以下场景:
有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();
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值