logo

Java Ek Açıklamaları

Java Dipnot temsil eden bir etikettir. meta veri yani Java derleyicisi ve JVM tarafından kullanılabilecek bazı ek bilgileri belirtmek için sınıf, arayüz, yöntemler veya alanlarla eklenmiştir.

Java'daki ek açıklamalar ek bilgi sağlamak için kullanılır, dolayısıyla XML ve Java işaretleyici arayüzleri için alternatif bir seçenektir.

Öncelikle bazı yerleşik açıklamaları öğreneceğiz, ardından özel açıklamalar oluşturmaya ve kullanmaya devam edeceğiz.


Yerleşik Java Ek Açıklamaları

Java'da birkaç yerleşik açıklama vardır. Bazı ek açıklamalar Java koduna, bazıları ise diğer ek açıklamalara uygulanır.

Java kodunda kullanılan Yerleşik Java Ek Açıklamaları

  • @Geçersiz kıl
  • @SuppressUyarılar
  • @Kullanımdan kaldırıldı

Diğer ek açıklamalarda kullanılan Yerleşik Java Ek Açıklamaları

  • @Hedef
  • @Tutulma
  • @Miras
  • @Belgelendi

Yerleşik Ek Açıklamaları Anlamak

Önce yerleşik ek açıklamaları anlayalım.

@Geçersiz kıl

@Override ek açıklaması, alt sınıf yönteminin üst sınıf yöntemini geçersiz kıldığını garanti eder. Aksi takdirde derleme zamanı hatası oluşur.

Bazen yazım hataları vb. gibi saçma hatalar yaparız. Bu nedenle, yöntemin geçersiz kılındığına dair güvence sağlayan @Override notunu işaretlemek daha iyidir.

Java'da dizi sıralama
 class Animal{ void eatSomething(){System.out.println('eating something');} } class Dog extends Animal{ @Override void eatsomething(){System.out.println('eating foods');}//should be eatSomething } class TestAnnotation1{ public static void main(String args[]){ Animal a=new Dog(); a.eatSomething(); }} 
Şimdi Test Edin
 Output:Comple Time Error 

@SuppressUyarılar

@SuppressWarnings ek açıklaması: derleyici tarafından verilen uyarıları bastırmak için kullanılır.

 import java.util.*; class TestAnnotation2{ @SuppressWarnings('unchecked') public static void main(String args[]){ ArrayList list=new ArrayList(); list.add('sonoo'); list.add('vimal'); list.add('ratan'); for(Object obj:list) System.out.println(obj); }} 
Şimdi Test Edin
 Now no warning at compile time. 

@SuppressWarnings('unchecked') ek açıklamasını kaldırırsanız, genel olmayan koleksiyon kullandığımız için derleme zamanında uyarı gösterecektir.


@Kullanımdan kaldırıldı

@Deprecated ek açıklaması, bu yöntemin kullanımdan kaldırıldığını belirtir, böylece derleyici uyarı yazdırır. Gelecek sürümlerde kaldırılabileceği konusunda kullanıcıya bilgi verir. Bu nedenle bu tür yöntemleri kullanmamak daha iyidir.

yazılım testi
 class A{ void m(){System.out.println('hello m');} @Deprecated void n(){System.out.println('hello n');} } class TestAnnotation3{ public static void main(String args[]){ A a=new A(); a.n(); }} 
Şimdi Test Edin

Derleme Zamanında:

 Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details. 

İşlem esnasında:

 hello n 

Java Özel Ek Açıklamaları

Java Özel ek açıklamalar veya Java Kullanıcı tanımlı ek açıklamaların oluşturulması ve kullanılması kolaydır. @arayüz element bir açıklama bildirmek için kullanılır. Örneğin:

 @interface MyAnnotation{} 

Burada MyAnnotation özel açıklama adıdır.

Java özel açıklama imzası için hatırlanması gereken noktalar

Programcının hatırlaması gereken birkaç nokta vardır.

  1. Metodun herhangi bir throw cümlesi olmamalıdır
  2. Yöntem aşağıdakilerden birini döndürmelidir: ilkel veri türleri, String, Class, enum veya bu veri türlerinin dizisi.
  3. Metodun herhangi bir parametresi olmamalıdır.
  4. Ek açıklamayı tanımlamak için arayüz anahtar sözcüğünün hemen önüne @ eklemeliyiz.
  5. Yönteme varsayılan bir değer atayabilir.

Ek Açıklama Türleri

Üç tür ek açıklama vardır.

  1. İşaretleyici Açıklaması
  2. Tek Değerli Açıklama
  3. Çoklu Değer Açıklaması
Java Ek Açıklama Türleri

1) İşaretleyici Açıklaması

Yöntemi olmayan bir açıklamaya işaretleyici açıklama adı verilir. Örneğin:

 @interface MyAnnotation{} 

@Override ve @Deprecated işaretleyici açıklamalardır.


2) Tek Değerli Açıklama

Tek yönteme sahip bir açıklamaya tek değerli açıklama adı verilir. Örneğin:

sayıların alfabesi
 @interface MyAnnotation{ int value(); } 

Varsayılan değeri de sağlayabiliriz. Örneğin:

 @interface MyAnnotation{ int value() default 0; } 

Tek Değerli Ek Açıklama nasıl uygulanır?

Tek değer açıklamasını uygulayacak kodu görelim.

 @MyAnnotation(value=10) 

Değer herhangi bir şey olabilir.


3) Çok Değerli Açıklama

Birden fazla yöntemi olan açıklamaya Çoklu Değer açıklaması adı verilir. Örneğin:

 @interface MyAnnotation{ int value1(); String value2(); String value3(); } } 

Varsayılan değeri de sağlayabiliriz. Örneğin:

alfabe numarası
 @interface MyAnnotation{ int value1() default 1; String value2() default &apos;&apos;; String value3() default &apos;xyz&apos;; } 

Çoklu Değer Ek Açıklaması nasıl uygulanır?

Çoklu değer açıklamasını uygulayacak kodu görelim.

 @MyAnnotation(value1=10,value2=&apos;Arun Kumar&apos;,value3=&apos;Ghaziabad&apos;) 

Java'daki özel açıklamalarda kullanılan yerleşik Ek Açıklamalar

  • @Hedef
  • @Tutulma
  • @Miras
  • @Belgelendi

@Hedef

@Hedef etiketi, açıklamanın hangi türde kullanılacağını belirtmek için kullanılır.

Java.lang.annotation. Eleman Türü enum, açıklamanın uygulanacağı öğenin türünü belirtmek için TYPE, METHOD, FIELD vb. gibi birçok sabit bildirir. ElementType enum'un sabitlerini görelim:

Eleman TürleriEk açıklamanın uygulanabileceği yer
TİPsınıf, arayüz veya numaralandırma
ALANalanlar
YÖNTEMyöntemler
İNŞAATÇIinşaatçılar
YEREL DEĞİŞKENyerel değişkenler
ANNOTATION_TYPEek açıklama türü
PARAMETREparametre

Bir sınıf için ek açıklama belirtme örneği

 @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); } 

Bir sınıf, yöntemler veya alanlar için ek açıklama belirtme örneği

 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); } 

@Tutulma

@Tutulma ek açıklama, ek açıklamanın hangi düzeyde kullanılabileceğini belirtmek için kullanılır.

Alıkoyma politikasıKullanılabilirlik
RetentionPolicy.SOURCEderleme sırasında atılan kaynak kodunu ifade eder. Derlenmiş sınıfta mevcut olmayacaktır.
RetentionPolicy.CLASSJava derleyicisinin kullanabileceği ancak JVM'nin kullanamayacağı .class dosyasını ifade eder. Sınıf dosyasına dahil edilmiştir.
RetentionPolicy.RUNTIMEJava derleyicisi ve JVM tarafından kullanılabilen çalışma zamanını ifade eder.

RetentionPolicy'yi belirtme örneği

 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); } 

Özel ek açıklama örneği: ek açıklama oluşturma, uygulama ve bunlara erişme

Ek açıklama oluşturma, uygulama ve erişmeye ilişkin basit bir örneği görelim.

Dosya: Test.java

 //Creating annotation import java.lang.annotation.*; import java.lang.reflect.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @interface MyAnnotation{ int value(); } //Applying annotation class Hello{ @MyAnnotation(value=10) public void sayHello(){System.out.println(&apos;hello annotation&apos;);} } //Accessing annotation class TestCustomAnnotation1{ public static void main(String args[])throws Exception{ Hello h=new Hello(); Method m=h.getClass().getMethod(&apos;sayHello&apos;); MyAnnotation manno=m.getAnnotation(MyAnnotation.class); System.out.println(&apos;value is: &apos;+manno.value()); }} 
Şimdi Test Edin
 Output:value is: 10 

bu örneği indir

Gerçek senaryoda yerleşik açıklamalar nasıl kullanılır?

Gerçek senaryoda, Java programcısının yalnızca ek açıklama uygulaması gerekir. Ek açıklama oluşturmasına ve erişmesine gerek yoktur. Ek açıklama oluşturma ve erişim, uygulama sağlayıcısı tarafından gerçekleştirilir. Açıklama adına Java derleyicisi veya JVM bazı ek işlemleri gerçekleştirir.


@Miras

Varsayılan olarak ek açıklamalar alt sınıflara aktarılmaz. @Inherited ek açıklaması, alt sınıflara miras alınacak ek açıklamayı işaretler.

 @Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{} 

@Belgelendi

@Documented Belgelere eklenecek açıklamayı işaretler.