类 Repeat<E>


public class Repeat<E> extends LoopDecorator<E>
重复N次
作者:
wjybxx date - 2023/11/26
  • 字段详细资料

    • MODE_ALWAYS

      public static final int MODE_ALWAYS
      另请参阅:
    • MODE_ONLY_SUCCESS

      public static final int MODE_ONLY_SUCCESS
      另请参阅:
    • MODE_ONLY_FAILED

      public static final int MODE_ONLY_FAILED
      另请参阅:
    • MODE_NEVER

      public static final int MODE_NEVER
      另请参阅:
  • 构造器详细资料

    • Repeat

      public Repeat()
  • 方法详细资料

    • resetForRestart

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

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

      覆盖:
      resetForRestart 在类中 Task<E>
    • beforeEnter

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

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

      protected void onChildCompleted(Task<E> child)
      从类复制的说明: Task
      子节点进入完成状态 1.避免方法数太多,实现类测试task的status即可 2.Task.getNormalizedStatus()有助于switch测试 3.task可能是取消状态,甚至可能没运行过直接失败(前置条件失败) 4.钩子任务和guard不会调用该方法 5.Task.isExecuting()有助于检测冲突,减少调用栈深度 6.同一子节点连续通知的情况下,completed的逻辑应当覆盖Task.onChildRunning(Task)的影响。 7.任何的回调和事件方法中都由用户自身检测取消信号
      指定者:
      onChildCompleted 在类中 Task<E>
    • getCountMode

      public int getCountMode()
    • setCountMode

      public void setCountMode(int countMode)
    • getRequired

      public int getRequired()
    • setRequired

      public void setRequired(int required)