Junior
Vai Java switch konstrukcijā var izmantot virknes?
sobes.tech AI
Atbilde no AI
Jā. Sākot ar Java 7, switch konstrukcijā var izmantot String tipu objektus.
// Piemērs, kā izmantot virknes `switch`
String status = "ACTIVE";
switch (status) {
case "ACTIVE":
System.out.println("Statuss: Aktīvs");
break;
case "PENDING":
System.out.println("Statuss: Gaidāms");
break;
case "DELETED":
System.out.println("Statuss: Dzēsts");
break;
default:
System.out.println("Nezināms statuss");
}
Svarīgi punkti, lietojot virknes switch:
- Salīdzinājums ar
equals()metodi, kas ir mazāk efektīvs nekā primitīvu tipu salīdzinājums. - Ja
casevirkne vaiswitchvērtība irnull, tiks iemestaNullPointerException. Šādus gadījumus jāapstrādā pirmsswitchvaidefaultblokā. casevirknēm jābūt konstanēm, kas ir noteiktas kompilācijas laikā.- Lielās un mazās burtu atšķirība ir svarīga. "Active" nav vienāds ar "active".
Alternatīvas virkņu lietošanai switch:
if-else if: Vispārzināmākais alternatīvais veids.Enum: Ieteicams veids ierobežotam iespējamās vērtības kopumam. Nodrošina tipa drošību un labāku koda pārvaldību.
// Enum piemērs
public enum Status {
ACTIVE, PENDING, DELETED
}
// ...
Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
case ACTIVE:
System.out.println("Statuss: Aktīvs");
break;
case PENDING:
System.out.println("Statuss: Gaidāms");
break;
case DELETED:
System.out.println("Statuss: Dzēsts");
break;
default:
System.out.println("Nezināms statuss"); // Parasti nav nepieciešams ar enum
}
Map: Noder, ja virknēm un darbībām ir dinamiskāka vai lielāka saistība.
// Map piemērs
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("Statuss: Aktīvs"));
actions.put("PENDING", () -> System.out.println("Statuss: Gaidāms"));
actions.put("DELETED", () -> System.out.println("Statuss: Dzēsts"));
// ...
String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("Nezināms statuss")).run();
Izvēle starp šiem pieejām ir atkarīga no konkrētās uzdevuma, koda lasāmības un tipa drošības vajadzības. Ierobežotam un fiksētam virkņu vērtību kopumam parasti ir labākā izvēle ir Enum.