Junior
Kun je strings gebruiken in de switch-constructie in Java?
sobes.tech AI
Antwoord van AI
Ja. Vanaf Java 7 kunnen objecten van het type String worden gebruikt in switch-constructies.
// Voorbeeld van het gebruik van strings in switch
String status = "ACTIVE";
switch (status) {
case "ACTIVE":
System.out.println("Status: Actief");
break;
case "PENDING":
System.out.println("Status: In afwachting");
break;
case "DELETED":
System.out.println("Status: Verwijderd");
break;
default:
System.out.println("Onbekende status");
}
Belangrijke punten bij het gebruik van strings in switch:
- Stringvergelijking wordt gedaan met de methode
equals(), wat minder efficiënt is dan vergelijken van primitieve types. - Als de string in
caseof de waarde inswitchnullis, wordt eenNullPointerExceptiongegooid. Deze gevallen moeten vóór deswitchof in dedefault-blok worden afgehandeld. - Strings in
casemoeten constante uitdrukkingen zijn die tijdens compilatie bekend zijn. - Hoofdlettergevoeligheid is van belang. "Active" is niet gelijk aan "active".
Alternatieven voor het gebruik van strings in switch:
if-else if: De meest voor de hand liggende alternatief.Enum: Voorkeur voor een beperkte set van mogelijke waarden. Biedt typeveiligheid en betere codebeheer.
// Voorbeeld van het gebruik van enum
public enum Status {
ACTIVE, PENDING, DELETED
}
// ...
Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
case ACTIVE:
System.out.println("Status: Actief");
break;
case PENDING:
System.out.println("Status: In afwachting");
break;
case DELETED:
System.out.println("Status: Verwijderd");
break;
default:
System.out.println("Onbekende status"); // Meestal niet nodig met enum
}
Map: Kan handig zijn als de mapping tussen strings en acties dynamischer of omvangrijker is.
// Voorbeeld van het gebruik van Map
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("Status: Actief"));
actions.put("PENDING", () -> System.out.println("Status: In afwachting"));
actions.put("DELETED", () -> System.out.println("Status: Verwijderd"));
// ...
String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("Onbekende status")).run();
De keuze tussen deze benaderingen hangt af van de specifieke taak, de leesbaarheid van de code en de behoefte aan typeveiligheid. Voor een beperkte en vaste set stringwaarden is Enum meestal de beste oplossing.