Sobes.tech
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 yoki switchdagi string null bo'lsa, NullPointerException xatosi yuzaga keladi. Bunday holatlarni switchdan oldin yoki default blokida 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.