为什么在VideoApprover类中,approver就是null了?
来源:25-2 责任链模式coding
鲁班23号
2020-05-09
老师好,为什么在VideoApprover类中,approver就是null了?在Test类中,通过setNextApprover方法把videoApprover对象传给父类并对父类的approver赋值了。在ArticleApprover类中时,if判断那approver那不为null,approver.deploy没问题。那么继续走到VideoApprover类中的时候,为啥approver就是null了呢?它不也是继承的父类Approver了吗?
2回答
-
杰9407987
2020-12-21
因为继承的是父类的approver属性,两个子类都是new出来的,VideoApprover类没有设置approver,自然是null了。继承归继承,但是不是吃同一个蛋糕啊,实际还是各个子类对象,给你看个小demo你就明白了,注意看SupperC 的构造方法
public class SupperC {
public SupperC() {
System.out.println("===SupperC===");
}
private List<String> list;
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}public class SubC1 extends SupperC{
}public class SubC2 extends SupperC{
}public class Testa {
public static void main(String[] args) {
SupperC subC1 = new SubC1();
subC1.setList(Arrays.asList("1","2"));
System.out.println(subC1.getList());
SupperC subC2 = new SubC2();
System.out.println(subC2.getList());
}
}输出结果:
===SupperC===
[1, 2]
===SupperC===
null
00 -
geelylucky
2020-05-09
同学,你想呀,ArticleApprover对象里面的approver设置为videoApprover对象,也就是说,审核为Article后,下一个审核的就是video了,video审核完毕后,后面就没有审核人员了,所以videoApprover里面的approver就是null了,假设说还有其他需要审核的,并且需要放在videoApprover后面审核的,可以设置为videoApprover里面的approver,这样就会继续往后传递下去。
00
相似问题