Java Ek Açıklamalarını Anlama – Java @annotations Eğitimi

Yayınlanan: 2019-10-22
Paket düzeyinde ek açıklamalar

Ek Açıklamalar Java'da nasıl ve nerede kullanılır?

Java bilgisayar programlama dilinde bir açıklama, Java kaynak koduna eklenebilen özel bir sözdizimsel meta veri biçimidir.

Sınıflar, yöntemler, değişkenler, parametreler ve paketler açıklamalı olabilir. Javadoc etiketlerinden farklı olarak, Java ek açıklamaları, derleyici tarafından oluşturulan sınıf dosyalarına gömülebilmeleri ve çalışma zamanında geri alınabilir hale getirilmek üzere Java VM tarafından saklanabilmeleri açısından yansıtıcı olabilir.

Java'da mevcut olanlardan meta açıklamalar oluşturmak mümkündür, bu da bu kavramı daha karmaşık hale getirir.

Java, dilde yerleşik olarak bulunan bir dizi ek açıklama tanımlar.

Java Ek Açıklamalarını Anlama - Crunchify İpuçları
Java Ek Açıklamalarını Anlama – Crunchify İpuçları

Java koduna uygulanan ek açıklamalar:

  • @Override – Fonksiyonun bir geçersiz kılma olup olmadığını kontrol eder. İşlev üst sınıflardan birinde bulunamazsa derleme uyarısına neden olur.
  • @Deprecated – İşlevi eski olarak işaretler. İşlev kullanılırsa derleme uyarısına neden olur.
  • @SuppressWarnings – Derleyiciye, açıklama parametrelerinde belirtilen derleme zamanı uyarılarını bastırması talimatını verir.

Diğer ek açıklamalara uygulanan ek açıklamalar:

  • @Retention – İşaretlenen ek açıklamanın nasıl depolanacağını belirtir—Yalnızca kodda, sınıfta derlenmiş veya çalışma zamanında yansıma yoluyla kullanılabilir.
  • @Documented – Belgelere eklenmek üzere başka bir notu işaretler.
  • @Target - Açıklamanın ne tür Java öğelerine uygulanabileceğini kısıtlamak için başka bir açıklamayı işaretler.
  • @Inherited – Açıklamalı sınıfın alt sınıflarına miras alınacak başka bir açıklamayı işaretler (varsayılan olarak açıklamalar alt sınıflara miras alınmaz).

Örnek Örnekler aracılığıyla bunlara bir göz atalım:

1) @Override Açıklama:

Varlığı, derleyiciye açıklamalı yöntemin mevcut bir üst sınıf yöntemini geçersiz kılması gerektiğini gösterir.

@Override için en yaygın kullanım durumu Object yöntemleridir:

@Override'ın yaratılmasının ana nedeni, basit yazım hatalarıyla uğraşmaktı.

Örneğin, yanlışlıkla olarak bildirilen bir yöntem

aslında bir geçersiz kılma değildir – yöntem adının tamamı küçük harflere sahiptir, bu nedenle hashValue() yönteminin adıyla tam olarak eşleşmez. Ancak mükemmel bir şekilde derlenecektir. Böyle bir hatanın yapılması kolay ve yakalanması zordur ki bu tehlikeli bir kombinasyondur. @Override ek açıklamasını kullanmak, bu tür hatalar yapmanızı engeller.

Bir üst sınıf yöntemini geçersiz kıldığınızda @Override kullanma alışkanlığınız olmalıdır.

Java Ek Açıklamalarını Anlama

2) @Kullanımdan Kaldırılan Ek Açıklama:

Bu açıklama, işaretli öğenin kullanımdan kaldırıldığını ve artık kullanılmaması gerektiğini belirtir. Derleyici, bir program @Deprecated ek açıklamasına sahip bir yöntem, sınıf veya alan kullandığında bir uyarı oluşturur.

Bir öğe kullanımdan kaldırıldığında, aşağıdaki örnekte gösterildiği gibi Javadoc @deprecated etiketi kullanılarak da belgelenmelidir.

3) @SuppressWarnings Açıklaması:

Derleyiciye söyle, lütfen bağırma. Ne yaptığımı biliyorum .

4) @Saklama Açıklaması:

Saklama notu, bu türdeki notların nerede ve ne kadar süreyle tutulacağını gösterir.

Üç değer vardır:

  • RetentionPolicy.SOURCE —Bu türdeki açıklamalar yalnızca kaynak düzeyinde tutulacak ve derleyici tarafından yok sayılacaktır.
  • RetentionPolicy.CLASS —Bu türdeki açıklamalar, derleme zamanında derleyici tarafından tutulacak, ancak sanal makine tarafından yoksayılacak.
  • RetentionPolicy.RUNTIME —Bu türdeki ek açıklamalar, yalnızca çalışma zamanında okunabilmeleri için sanal makine tarafından tutulacaktır.

5) @Belgelenmiş Açıklama:

Şimdi Java Doc komutunu çalıştırmayı deneyin ve çıktıyı görün.

6) @Target Açıklaması:

Hedef, açıklamalı açıklama türünün örnekleri kullanılarak hangi program öğelerinin açıklama eklenebileceğini belirtir. Target değeri, java.lang.annotation.ElementType enum üyelerinden biridir:

  1. ANNOTATION_TYPE. Açıklamalı açıklama türü, açıklama türü bildirimine açıklama eklemek için kullanılabilir.
  2. İNŞAATÇI. Açıklamalı açıklama türü, yapıcı bildirimine açıklama eklemek için kullanılabilir.
  3. ALAN. Açıklamalı açıklama türü, alan bildirimine açıklama eklemek için kullanılabilir.
  4. YEREL DEĞİŞKEN. Açıklamalı açıklama türü, yerel değişken bildirimine açıklama eklemek için kullanılabilir.
  5. YÖNTEM. Açıklamalı açıklama türü, yöntem bildirimine açıklama eklemek için kullanılabilir.
  6. PAKET. Açıklamalı açıklama türü, paket bildirimlerine açıklama eklemek için kullanılabilir.
  7. PARAMETRE. Açıklamalı açıklama türü, parametre bildirimlerine açıklama eklemek için kullanılabilir.
  8. TİP. Açıklamalı açıklama türü, tür bildirimlerine açıklama eklemek için kullanılabilir.

7) @Devralınan Açıklama:

Adından da anlaşılacağı gibi, bir @Inherited açıklama türü, açıklamalı bir türün alt sınıfları tarafından miras alınır.

Bu örnekte, Superclass , hem @ForEveryone hem de @JustForMe ile açıkça açıklanmıştır. Subclass açıkça ikisinden biri ile işaretlenmemiş; ancak, @ForEveryone devralır, çünkü ikincisi @Inherited ile açıklamalıdır.

@JustForMe açıklamalı değildir, bu nedenle Subclass tarafından miras alınmaz.

İşte bir sınıf düzeyinde ek açıklamalar

Sınıf düzeyinde ek açıklamalar