Junior
Java'da switch tuzilmasida satrlar ishlatilishi mumkinmi?
sobes.tech AI
AIdan javob
Ha. Java 7-dan boshlab, switch konstruktsiyasida String turlaridan foydalanish mumkin.
// Stringlardan foydalanish misoli switchda
String status = "ACTIVE";
switch (status) {
case "ACTIVE":
System.out.println("Holat: Faol");
break;
case "PENDING":
System.out.println("Holat: Kutilmoqda");
break;
case "DELETED":
System.out.println("Holat: O'chirilgan");
break;
default:
System.out.println("Noma'lum holat");
}
switchda stringlardan foydalanishda muhim nuqtalar:
- Stringlarni taqqoslash
equals()metodi yordamida amalga oshiriladi, bu primitiv tiplarga nisbatan kamroq samarali. - Agar
casedagi yokiswitchdagi stringnullbo'lsa,NullPointerExceptionxatosi yuzaga keladi. Bunday holatlarniswitchdan oldin yokidefaultblokida hal qilish kerak. caseda kiritilgan stringlar kompilyatsiya vaqtida konstant bo'lishi kerak.- Katta-kichik harf sezgirligi mavjud. "Active" va "active" bir xil emas.
Stringlar o'rniga alternativlar:
if-else if: Eng aniq alternativ.Enum: Cheklangan qiymatlar to'plami uchun afzal. Tip xavfsizligini ta'minlaydi va kodni boshqarishni yaxshilaydi.
// Enumdan foydalanish misoli
public enum Status {
ACTIVE, PENDING, DELETED
}
// ...
Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
case ACTIVE:
System.out.println("Holat: Faol");
break;
case PENDING:
System.out.println("Holat: Kutilmoqda");
break;
case DELETED:
System.out.println("Holat: O'chirilgan");
break;
default:
System.out.println("Noma'lum holat"); // Enum bilan odatda kerak emas
}
Map: Agar stringlar va harakatlar o'rtasidagi moslik dinamik yoki keng bo'lsa, foydali bo'lishi mumkin.
// Mapdan foydalanish misoli
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("Holat: Faol"));
actions.put("PENDING", () -> System.out.println("Holat: Kutilmoqda"));
actions.put("DELETED", () -> System.out.println("Holat: O'chirilgan"));
// ...
String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("Noma'lum holat")).run();
Ushbu yondashuvlar orasidan tanlov vazifa, kodning o'qilishi va tip xavfsizligi ehtiyojlariga bog'liq. Cheklangan va doimiy string qiymatlari uchun odatda Enum eng yaxshi yechim hisoblanadi.