Sobes.tech
Junior

Java-da switch quruluşunda sətirlər istifadə oluna bilərmi?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli. Java 7-dən başlayaraq, switch ifadəsində String tipli obyektlərdən istifadə etmək mümkündür.

// String-lərlə switch nümunəsi
String status = "ACTIVE";
switch (status) {
    case "ACTIVE":
        System.out.println("Status: Aktiv");
        break;
    case "PENDING":
        System.out.println("Status: Gözləmə vəziyyətində");
        break;
    case "DELETED":
        System.out.println("Status: Silinmiş");
        break;
    default:
        System.out.println("Naməlum status");
}

switch-də string istifadə edərkən diqqət yetirilməli əsas nöqtələr:

  • Stringlərin müqayisəsi equals() metodu ilə həyata keçirilir, bu isə primitiv tiplərlə müqayisədən daha az effektivdir.
  • Əgər case-dəki və ya switch-dəki string null olarsa, NullPointerException atılır. Bu halları switch-dən əvvəl və ya default blokunda idarə etmək lazımdır.
  • case-dəki stringlər kompilyasiya zamanı sabit olmalıdır.
  • Böyük-kiçik hərf fərqi önəmlidir. "Active" ilə "active" eyni deyil.

String istifadə etmədən alternativlər:

  • if-else if: Ən aydın alternativ.
  • Enum: Məhdud və müəyyən dəyər dəstləri üçün üstün üsul. Tip təhlükəsizliyi və kodun idarə olunmasını yaxşılaşdırır.
// Enum istifadə nümunəsi
public enum Status {
    ACTIVE, PENDING, DELETED
}

// ...

Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
    case ACTIVE:
        System.out.println("Status: Aktiv");
        break;
    case PENDING:
        System.out.println("Status: Gözləmə vəziyyətində");
        break;
    case DELETED:
        System.out.println("Status: Silinmiş");
        break;
    default:
        System.out.println("Naməlum status"); // Enum ilə adətən ehtiyac olmur
}
  • Map: Əgər string və fəaliyyətlər arasındakı əlaqə daha dinamik və ya genişdirsə, istifadə edilə bilər.
// Map istifadə nümunəsi
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("Status: Aktiv"));
actions.put("PENDING", () -> System.out.println("Status: Gözləmə vəziyyətində"));
actions.put("DELETED", () -> System.out.println("Status: Silinmiş"));

// ...

String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("Naməlum status")).run();

Seçim, konkret tapşırıq, kodun oxunaqlılığı və tip təhlükəsizliyi ehtiyaclarından asılıdır. Məhdud və sabit string dəyərlər üçün Enum adətən ən yaxşı seçimdir.