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; } ---- ifdef::env-github,rspecator-view[] == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]