如何替换 if (someobject != null), 实现判空

今天刷着有关技术方面微信订阅号的帖子,是有关避免空指针调用的,说实话没有看这个帖子之前我还真没有想过有关 if (someobject != null) 这样的语句会有什么不好判空后在进行相关的功能实现这个是我们常用的啊!这篇文章记录一下该种使用希望之后对自己有帮助。

然后用工厂模式的使用来体验一下。

public interface Shape {
    void draw();
}
public class Circle implements Shape{
    @Override
    public void draw() {
        System.out.println("Inside Circle::draw() method.");
    }
}
public class Rectangle implements Shape{
    @Override
    public void draw() {
        System.out.println("Inside Rectangle::draw() method.");
    }
}
public class Square implements Shape{
    @Override
    public void draw() {
        System.out.println("Inside Square::draw() method.");
    }
}

工厂类

实现一:

public class ShapeFactory {
    
   //使用 getShape 方法获取形状类型的对象
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }        
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      return null;
   }
}

实现二:

public class ShapeFactory {
    private static Shape NO_SHAPE = new Shape() {
        @Override
        public void draw() {
            System.out.println("你的输入有误!!");
        }
    };
    //使用 getShape 方法获取形状类型的对象
    public Shape getShape(String shapeType){
        if(shapeType.equalsIgnoreCase("CIRCLE")){
            return new Circle();
        } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
            return new Rectangle();
        } else if(shapeType.equalsIgnoreCase("SQUARE")){
            return new Square();
        }
        return NO_SHAPE;
    }
}

测试:

    @Test
    public void test2(){
        new ShapeFactory().getShape("").draw();
        new ShapeFactory().getShape("SQUARE").draw();
    }

输出:

输出:

输出一:

java.lang.NullPointerException

输出二:

你的输入有误!!
Inside Square::draw() method.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值