【问题标题】:Java: How do you return multiple objects in order?Java:如何按顺序返回多个对象?
【发布时间】:2016-11-22 12:55:34
【问题描述】:

我正在尝试让智能代理向右转 3 次。既然不能返回多个对象,那我怎么能连续调用3次this.buildPhysicalAction(TurnRightAction.class)呢?

public class VacuumWorldExplorerMind extends VacuumWorldDefaultMind {

  @Override
  public EnvironmentalAction decide(Object... parameters) {

    PerceiveAction range = new PerceiveAction();
    VacuumWorldCoordinates currentLocation;

    this.buildPhysicalAction(TurnRightAction.class);
    this.buildPhysicalAction(TurnRightAction.class);
    this.buildPhysicalAction(TurnRightAction.class);

    while (true) {

      // if perceive range-checkForWall == 1
      // turn left
      // count steps made = stepsMade
      if (range.getPerceptionRange() == 1) {
        return this.buildPhysicalAction(TurnLeftAction.class);
      }

      return this.buildPhysicalAction(MoveAction.class);
    }
  }
}

【问题讨论】:

  • 可以返回一个数组,可以包含多个值。
  • 我怎样才能将 this.buildPhysicalAction(TurnRightAction.class) 添加到数组中?你是说ArrayList吗?
  • 有点不相关,但我可以问一下while (true) 循环的意义是什么?代码总是在第一次迭代时返回,所以这个循环似乎毫无意义
  • 是的,你是对的,我会删除它
  • ArrayList 似乎是满足您需求的不错选择,因为它保留了在这种情况下很重要的顺序,我敢打赌。此外,您可以使用 Composite 模式,它可以让您组合环境动作,并为消费者提供一个很好的抽象,而消费者又会简单地在您的 Action 上调用一些 Execute 方法,并将执行进一步传播到内部动作。

标签: java return multiple-instances


【解决方案1】:

这基本上是一种设计选择。 一种方法是定义如下类:TurnRightAction、TurnRightTwiceAction 和 TurnRightThriceAction,并在您需要转弯一次、两次或三次时分别调用它们。

另一种选择是您已经在做的事情,调用 TurnRightAction 需要该操作的次数。

【讨论】:

  • 调用 this.buildPhysicalAction(TurnRightAction.class);单独不会右转,需要返回this.buildPhysicalAction(TurnRightAction.class);
  • 所以你可以返回 TurnRightThriceAction 3 次右转。另一种方法是返回包含 this.buildPhysicalAction(TurnRightAction.class) 和计数的包装类。
猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多