switch语句中的变量数 - Java

mac*_*ian 4 java enumeration switch-statement enumerated-types

你能switch在Java语句中包含多个变量吗?

enum Facing { North, South, East, West }

enum Forward { Right, Left }

Forward forward;

Facing facing;

Integer myNumber;
Run Code Online (Sandbox Code Playgroud)

看起来像这样?如果是这样,我将如何实施

switch (facing, forward) {
  case North, Right : facing 1 = East
}
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,但想知道这种技术是否可行,我将如何实施呢?

Ben*_*ing 9

Eng.Fouad给出了一个方法.

另一个可能是创建一个更复杂的Facing枚举,如下所示:

enum Facing {
  North {
    Facing right() { return East; }
    Facing left() { return West; }
  },
  East {
    Facing right() { return South; }
    Facing left() { return North; }
  },
  South {
    Facing right() { return West; }
    Facing left() { return East; }
  },
  West {
    Facing right() { return North; }
    Facing left() { return South; }
  };
  abstract Facing right();
  abstract Facing left();
}
Run Code Online (Sandbox Code Playgroud)

这样的构造还允许轻松链接,以便您可以编写如下的通用反向例程:

Facing reverse(Facing facing) { return facing.right().right(); }
Run Code Online (Sandbox Code Playgroud)