java空对象

1、定义

    空对象就是一个正常的对象,只不过你用这个对象来替代null。

2、作用

      当使用null表示缺少对象时,在每次引用前都要测试其是否为null,因此需要在代码中加入判断语句,当判断语句变多时,代码就变得杂乱,使用空对象可以减少判断的语句。

例子:

    假如有一个Person类,Person类有姓名地址等属性。还有一个Position(职位)类,职位类包含了职位名称和担任职位的人(一个Person对象)等属性。

    一般情况下是先确定有哪些职位然后再确定职位由谁担任,那么在没有确定担任人的时候,可以将Position类中的Person对象设为null,但是也可以将其设为一个空对象。

Person类:

class Person{
	private String name;
	private String address;
	public Person(String name,String address) {
		this.name = name;
		this.address = address;
	}
    /**
      *Person的空对象,它是一个实在的对象,只不过域的值与其他对象不同
      */
	public static class NullPerson extends Person implements Null{
		private NullPerson(){ super("None","Node");}
		public String toString() {
			return "NullPerson";
		}
	}
	public String toString() {
		return name+" "+address;
	}
	public static final Person NULL = new NullPerson();
}

Position类

class Position{
	private String title;
	private Person person;//当该职位没有人担任时,我们可以将person设为空对象,而不是null;
	public Position(String title,Person person) {
		this.title = title;
		this.person = person;
	}
	public Position(String title) {
		this.title = title;
		person = Person.NULL;//只设置职位而没有派任人时,将person设为空对象
	}
	public String getTitle() {
		return title;
	}
	public void setTitlt(String title) {
		this.title = title;
	}
	public Person getPerson() {//如果这个职位没有人担任,那么会返回空对象而不是null
		return person;
	}
	public void setPerson(Person newPerson) {
		person = newPerson;
		if(person == null)
			person = Person.NULL; 
	}
	public String toString() {
		return title+" "+person.toString();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值