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ə yaswitch-dəki stringnullolarsa,NullPointerExceptionatılır. Bu hallarıswitch-dən əvvəl və yadefaultblokunda 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.