类 SelectorN<T>

所有已实现的接口:
ICancelTokenListener

public class SelectorN<T> extends SingleRunningChildBranch<T>
多选Selector。 如果required小于等于0,则等同于Success 如果required等于1,则等同于Selector; 如果required等于children.size,则在所有child成功之后成功 -- 默认不会提前失败。 如果required大于children.size,则在所有child运行完成之后失败 -- 默认不会提前失败。
作者:
wjybxx date - 2023/11/26
  • 构造器详细资料

    • SelectorN

      public SelectorN()
    • SelectorN

      public SelectorN(List<Task<T>> children)
    • SelectorN

      public SelectorN(Task<T> first, @Nullable Task<T> second)
  • 方法详细资料

    • resetForRestart

      public void resetForRestart()
      从类复制的说明: Task
      重置任务以便重新启动(清理运行产生的所有临时数据)

      1. 和exit一样,清理的是运行时产生的临时数据,而不是所有数据;不过该方法是比exit更彻底的清理。 2. 钩子任务也应当被重置。 3. 与Task.beforeEnter()相同,重写方法时,应先执行父类逻辑,再重置自身属性。 4. 有临时数据的Task都应该重写该方法,行为树通常是需要反复执行的。

      覆盖:
      resetForRestart 在类中 SingleRunningChildBranch<T>
    • beforeEnter

      protected void beforeEnter()
      从类复制的说明: Task
      该方法用于初始化对象。 1.不命名为init,是因为init通常让人觉得只调用一次。 2.该方法不可以使自身进入完成状态。
      覆盖:
      beforeEnter 在类中 SingleRunningChildBranch<T>
    • enter

      protected void enter(int reentryId)
      从类复制的说明: Task
      该方法在Task进入运行状态时执行 1.数据初始化需要放在Task.beforeEnter()中,避免执行逻辑时对象未初始化完成。 2.如果要初始化子节点,也放到Task.beforeEnter()方法; 3.允许更新自己为完成状态
      覆盖:
      enter 在类中 Task<T>
      参数:
      reentryId - 用于判断父类是否使任务进入了完成状态;虽然也可先捕获再调用超类方法,但传入会方便许多。
    • onChildCompleted

      protected void onChildCompleted(Task<T> child)
      从类复制的说明: SingleRunningChildBranch
      子类的实现模板:
      
      
        protected void onChildCompleted(Task child) {
            runningChild = null;
            // 尝试计算结果(记得处理取消)
            ...
            // 如果未得出结果
            if (!isExecuting()) {
                template_execute();
            }
        }
      
       
      覆盖:
      onChildCompleted 在类中 SingleRunningChildBranch<T>
    • getRequired

      public int getRequired()
    • setRequired

      public void setRequired(int required)
    • isFailFast

      public boolean isFailFast()
    • setFailFast

      public void setFailFast(boolean failFast)