## Why is this an issue?

Since Java 7, `String`s can be used as `switch` arguments. So when a single `String` is tested against three or more values in an `if`/`else if` structure, it should be converted to a switch instead for greater readability.

Note that this rule is automatically disabled when the project’s `sonar.java.source` is lower than `7`.

### Noncompliant code example

    if ("red".equals(choice)) {  // Noncompliant
      dispenseRed();
    } else if ("blue".equals(choice)) {
      dispenseBlue();
    } else if ("yellow".equals(choice)) {
      dispenseYellow();
    } else {
      promptUser();
    }

### Compliant solution

    switch(choice) {
      case "Red":
        dispenseRed();
        break;
      case "Blue":
        dispenseBlue():
        break;
      case "Yellow":
        dispenseYellow();
        break;
      default:
        promptUser();
        break;
    }