Java 空对象是指在 Java 语言中,没有任何属性和方法的对象。它可以用来表示一个空的或者不存在的对象。
Java 空对象是一种特殊的对象,它可以用来表示一个不存在的或者无效的对象。它可以帮助开发人员避免出现 NullPointerException 异常,因为它不会引发这样的异常。
Java 空对象也可以用来表示一个未初始化的对象,这样就可以避免出现 NullPointerException 异常。此外,它还可以用来表示一个集合中没有元素的情况,而不必使用 null 来表示。
Java 空对象也可以用于处理多态性问题,因为它不会引发 ClassCastException 异常。此外,它还能够帮助开发人员避免函数重写问题,因为它不会引发 AbstractMethodError 和 NoSuchMethodError 异常。
public class EmptyObject { public static final EmptyObject EMPTY_OBJECT = new EmptyObject(); private EmptyObject() { } public void doSomething() { } }
在空对象模式中,创建一个无业务对象,包括 null
对象。
我们使用无业务对象来替换空指针检查。
我们称之为一个无业务的对象Null对象。
Null对象在数据不可用时提供默认行为。
在空对象模式中,我们通常创建一个抽象类来指定各种操作。
Null Object和具体类都将扩展这个抽象类。
Null Object类只提供空逻辑。
abstract class AbstractEmployee { protected String name; public abstract boolean isNull(); public abstract String getName(); } class Programmer extends AbstractEmployee { public Programmer(String name) { this.name = name; } @Override public String getName() { return name; } @Override public boolean isNull() { return false; } } class NullCustomer extends AbstractEmployee { @Override public String getName() { return "Not Available"; } @Override public boolean isNull() { return true; } } class EmployeeFactory { public static final String[] names = {"Rob", "Joe", "Jack"}; public static AbstractEmployee getCustomer(String name){ for (int i = 0; i < names.length; i++) { if (names[i].equalsIgnoreCase(name)){ return new Programmer(name); } } return new NullCustomer(); } } public class Main { public static void main(String[] args) { AbstractEmployee emp = EmployeeFactory.getCustomer("Rob"); AbstractEmployee emp2 = EmployeeFactory.getCustomer("Bob"); AbstractEmployee emp3 = EmployeeFactory.getCustomer("Jack"); AbstractEmployee emp4 = EmployeeFactory.getCustomer("Tom"); System.out.println(emp.getName()); System.out.println(emp2.getName()); System.out.println(emp3.getName()); System.out.println(emp4.getName()); } }
上面的代码生成以下结果。
Java面向对象设计 -Java内部类成员内部类可以访问其所有实例成员,实例字段和其封闭类的实例方法。class Outer {private int val...
Java面向对象的设计 -Java继承隐藏方法隐藏类从其超类继承所有非私有静态方法。重定义类中继承的静态方法称为方法隐藏。子类中的...
Java数据类型教程 -Java字符串转换String类有一个重载的valueOf()静态方法来获取任何原始数据类型或任何对象的值的字符串表示。...
JavaFX教程 -JavaFX HBoxJavaFX API具有将UI控件显示到场景图上的布局类。HBox布局类将JavaFX子节点放在水平行中。新的子节点附...
JavaFX教程 -JavaFX手势事件JavaFX可以处理来自触摸使能设备的触摸和手势的事件。手势和触摸事件支持触摸启用设备的以下事件手势...