今天刷着有关技术方面微信订阅号的帖子,是有关避免空指针调用的,说实话没有看这个帖子之前我还真没有想过有关 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 • 1
输出二:
你的输入有误!! Inside Square::draw() method.