Junior
Оё метавон дар Java дар сохтори switch сатрҳоро истифода бурд?
sobes.tech AI
Ҷавоб аз AI
Бале. Аз Java 7, дар сохтори switch метавон объектҳои навъи String-ро истифода бурд.
// Мисоли истифодаи сатрҳо дар switch
String status = "ACTIVE";
switch (status) {
case "ACTIVE":
System.out.println("Ҳолат: Фаъол");
break;
case "PENDING":
System.out.println("Ҳолат: Дар интизорӣ");
break;
case "DELETED":
System.out.println("Ҳолат: Баъд аз тоза");
break;
default:
System.out.println("Ҳолати ношинохта");
}
Мавқеъҳои муҳим дар истифодаи сатрҳо дар switch:
- Муқоиса кардани сатрҳо бо истифода аз методи
equals(), ки камтар самаранок аст, нисбат ба муқоиса кардани намудҳои primitives. - Агар сатр дар
caseё арзиш дарswitchбаробар боnullбошад, хатогӣNullPointerExceptionба вуҷуд меояд. Ин ҳолатҳоро бояд ё пеш азswitchё дар блокиdefaultбаррасӣ кард. - Сатрҳо дар
caseбояд дар вақти компилятсия константа бошанд. - Ҳарфҳои ҳарфӣ муҳим аст. "Active" баробар бо "active" нест.
Альтернативҳои истифодаи сатрҳо дар switch:
if-else if: Интихоби равзанаи равшантарин.Enum: Роҳи беҳтарин барои маҷмӯи маҳдуд ва муайяншудаи арзишҳо. Таъмини бехатарии навъ ва идоракунии беҳтар.
// Мисоли истифодаи enum
public enum Status {
ACTIVE, PENDING, DELETED
}
// ...
Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
case ACTIVE:
System.out.println("Ҳолат: Фаъол");
break;
case PENDING:
System.out.println("Ҳолат: Дар интизорӣ");
break;
case DELETED:
System.out.println("Ҳолат: Баъд аз тоза");
break;
default:
System.out.println("Ҳолати ношинохта"); // одатан дар бо enum лозим нест
}
Map: Мумкин аст, агар мувофиқат байни сатр ва амалҳо бештар динамикӣ ё калон бошад.
// Мисоли истифодаи Map
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("Ҳолат: Фаъол"));
actions.put("PENDING", () -> System.out.println("Ҳолат: Дар интизорӣ"));
actions.put("DELETED", () -> System.out.println("Ҳолат: Баъд аз тоза"));
// ...
String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("Ҳолати ношинохта")).run();
Интихоб байни ин равишҳо ба вазифаи мушаххас, хонданӣ будани коди ва ниёз ба бехатарии навъ вобаста аст. Барои маҷмӯи маҳдуд ва муқаррарии арзишҳои сатрӣ, enum одатан беҳтарин қарор аст.