Junior
189
Java'da switch yapısında dizgeler kullanılabilir mi?
AI'dan gelen yanıt
sobes.tech yapay zeka
Evet. Java 7 ve sonrası sürümlerde, switch yapısında String nesneleri kullanılabilir.
// String kullanımı örneği
String status = "ACTIVE";
switch (status) {
case "ACTIVE":
System.out.println("Durum: Aktif");
break;
case "PENDING":
System.out.println("Durum: Beklemede");
break;
case "DELETED":
System.out.println("Durum: Silindi");
break;
default:
System.out.println("Bilinmeyen durum");
}
switch içinde string kullanırken dikkat edilmesi gereken noktalar:
- String karşılaştırması
equals()metodu ile yapılır, bu da temel tiplerle karşılaştırmadan daha az verimlidir. caseiçindeki veyaswitch'teki stringnullise,NullPointerExceptionhatası alınır. Bu durumlarswitchöncesinde veyadefaultbloğunda ele alınmalıdır.caseiçindeki stringler derleme zamanında sabit olmalıdır.- Büyük/küçük harf duyarlılığı vardır. "Active" ile "active" eşit değildir.
String yerine alternatif yaklaşımlar:
if-else if: En belirgin alternatif.Enum: Sınırlı ve belirli değerler kümesi için tercih edilir. Tip güvenliği sağlar ve kod yönetimini kolaylaştırır.
// Enum kullanımı örneği
public enum Status {
ACTIVE, PENDING, DELETED
}
// ...
Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
case ACTIVE:
System.out.println("Durum: Aktif");
break;
case PENDING:
System.out.println("Durum: Beklemede");
break;
case DELETED:
System.out.println("Durum: Silindi");
break;
default:
System.out.println("Bilinmeyen durum"); // Enum ile genellikle gerekmez
}
Map: String ve eylemler arasındaki ilişki daha dinamik veya büyükse kullanılabilir.
// Map kullanımı örneği
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("Durum: Aktif"));
actions.put("PENDING", () -> System.out.println("Durum: Beklemede"));
actions.put("DELETED", () -> System.out.println("Durum: Silindi"));
// ...
String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("Bilinmeyen durum")).run();
Bu yaklaşımlardan hangisinin kullanılacağı, görevin doğasına, kodun okunabilirliğine ve tip güvenliğine olan ihtiyaca bağlıdır. Sınırlı ve sabit string değerleri kümesi için genellikle Enum en iyi çözümdür.