ProgramlamaJava Geliştirici

Java'da anotasyonlar nedir, nasıl çalışır ve programlamada nasıl kullanılır?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Anotasyonlar, Java 5 ile birlikte, derleyici ve çeşitli çerçeveler tarafından kullanılabilen meta veriler sağlamak için eklenmiştir. Başlangıçta, JUnit veya Hibernate gibi araçların koda daha iyi etkileşime girmesine yardımcı oluyordu; bunun için tekrarlayıcı ya da harici konfigürasyon yazmaya gerek yoktu.

Anotasyonlar, sınıflara, metodlara, alanlara, parametrelere ve hatta yerel değişkenlere bilgi ekleyerek kullanılabilir. Derleme aşamasında, çalışma zamanında veya kaynak kodu işlenirken, doğrulama, ek dosya üretimi veya programın davranışını değiştirmek için kullanılabilirler.

Kendi anotasyonunuzu oluşturmak için @interface anahtar kelimesi kullanılır.

Kod örneği:

@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyAnnotation { String value(); } class Example { @MyAnnotation("Test") public void annotatedMethod() {} }

Anahtar özellikler:

  • Anotasyonlar parametre alabilir (sınırlı türlerle)
  • Anotasyonların farklı kapsamları olabilir (SOURCE, CLASS, RUNTIME)
  • Standart işlevselliği genişletmek için kendi anotasyonlarınızı oluşturabilirsiniz

Aldatıcı Sorular.

Anotasyonlar sadece çalışma zamanını mı etkiler?

Hayır, anotasyonlar yalnızca kaynak koduyla (SOURCE), byte koduyla (CLASS) sınırlı olabilir veya çalışma aşamasında (RUNTIME) erişilebilir. Etkileri, RetentionPolicy’ye bağlıdır.

@Retention(RetentionPolicy.SOURCE) public @interface SourceOnly {}

Anotasyon parametreleri herhangi bir türde olabilir mi?

Hayır, geçerli türler yalnızca ilkel türler, dizgeler, enumerasyonlar, diğer anotasyonlar ve bu türlerin dizileridir. Nesneler kullanılamaz.

Anotasyonlar miras alınabilir mi?

Teknik olarak, anotasyonlar sınıflar gibi miras alınmaz. @Inherited ile işaretlenmiş anotasyon, yalnızca miras alan sınıflara yayılır (metodları etkilemez).

Tipik Hatalar ve Anti-deseni

  • Yanlış retention ve target sırası kullanımı
  • Özel anotasyonlar oluştururken belgelerin eksikliği
  • Kodumun bakımını zorlaştırarak aşırı anotasyon kullanımı

Hayattan Bir Örnek

Olumsuz Vaka

Büyük bir projede bir geliştirici, test otomasyonunu sağlamak için onlarca farklı anotasyon oluşturmuş ve bunları tanımlamadan, belgelerle desteklemeden ve kapsamlarını sınırlamadan bırakmıştır. Sonuç olarak, yeni bir ekip üyesinin hangi anotasyonların nereye çalıştığını anlaması zor olmuştur.

Artılar:

  • Esnek otomasyon
  • Gelecekte genişletme imkanı

Eksiler:

  • Kodun bakımında karışıklık
  • Yeni çalışanların eğitiminde artan zorluk

Olumlu Vaka

Ekip, kendi anotasyonlarını yazmak için katı bir strateji uygulamıştır: yalnızca gerekli olanları eklemiş, her birini ayrıntılı olarak açıklamış ve kapsamlarını sınırlamıştır.

Artılar:

  • Yüksek sürdürülebilirlik
  • Bakım ve eğitim kolaylığı

Eksiler:

  • Mutabakat ve standartlaştırma için zaman ayırmak gerekmiştir