为什么在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


0
0

geelylucky

2020-05-09

同学,你想呀,ArticleApprover对象里面的approver设置为videoApprover对象,也就是说,审核为Article后,下一个审核的就是video了,video审核完毕后,后面就没有审核人员了,所以videoApprover里面的approver就是null了,假设说还有其他需要审核的,并且需要放在videoApprover后面审核的,可以设置为videoApprover里面的approver,这样就会继续往后传递下去。

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程