Java Ek Açıklamaları (Örneklerle)

Bu eğitimde, ek açıklamaların ne olduğunu, farklı Java notlarını ve bunları örnekler yardımıyla nasıl kullanacağımızı öğreneceğiz.

Java ek açıklamaları, program kaynak kodumuz için meta verilerdir (verilerle ilgili veriler).

Derleyiciye program hakkında ek bilgi sağlarlar ancak programın bir parçası değildirler. Bu ek açıklamalar, derlenen programın yürütülmesini etkilemez.

Ek açıklamalar ile başlar @. Sözdizimi şöyledir:

 @AnnotationName 

Bir @Overrideek açıklama örneği alalım .

@OverrideEk açıklama belirtir, bu açıklama ile işaretlenmiş yöntem aynı yöntem adı, dönüş türü ve parametre listesi ile üst sınıf yöntemini geçersiz kılar.

@OverrideBir yöntemi geçersiz kılarken kullanılması zorunlu değildir . Bununla birlikte, eğer kullanırsak, derleyici bir şey yanlışsa (yanlış parametre türü gibi) yöntemi geçersiz kılarken hata verir.

Örnek 1: @Override Ek Açıklama Örneği

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Çıktı

 Ben bir köpeğim. 

Bu örnekte, yöntem displayInfo()hem Hayvan üst sınıfında hem de Köpek alt sınıfında mevcuttur. Bu yöntem çağrıldığında, üst sınıftaki yöntem yerine alt sınıfın yöntemi çağrılır.

Ek açıklama biçimleri

Ek açıklamalar ayrıca öğeler (üyeler / öznitelikler / parametreler) içerebilir.

1. İşaretçi Ek Açıklamaları

İşaretçi ek açıklamaları üyeler / öğeler içermez. Yalnızca bir beyanı işaretlemek için kullanılır.

Sözdizimi şöyledir:

 @AnnotationName () 

Bu ek açıklamalar öğe içermediğinden parantezler hariç tutulabilir. Örneğin,

 @Override 

2. Tek öğeli Ek Açıklamalar

Tek bir öğe ek açıklaması yalnızca bir öğe içerir.

Sözdizimi şöyledir:

 @AnnotationName (elementName = "elementValue") 

Yalnızca bir öğe varsa, o öğeyi değer olarak adlandırmak bir kuraldır.

 @AnnotationName (value = "elementValue") 

Bu durumda, eleman adı da hariç tutulabilir. Öğe adı varsayılan olarak değer olacaktır.

 @AnnotationName ("elementValue") 

3. Çok elemanlı Ek Açıklamalar

Bu ek açıklamalar virgülle ayrılmış birden çok öğe içerir.

Sözdizimi şöyledir:

 @AnnotationName (element1 = "değer1", element2 = "değer2") 

Ek açıklama yerleştirme

Herhangi bir beyanname, beyannamenin üzerine yerleştirilerek açıklama ile işaretlenebilir. Java 8'den itibaren, ek açıklamalar bir türden önce de yerleştirilebilir.

1. Yukarıdaki beyanlar

Yukarıda bahsedildiği gibi, Java açıklamaları sınıf, yöntem, arayüz, alan ve diğer program öğesi bildirimlerinin üzerine yerleştirilebilir.

Örnek 2: @SuppressWarnings Ek Açıklama Örneği

 import java.util.*; class Main ( @SuppressWarnings("unchecked") static void wordsList() ( ArrayList wordList = new ArrayList(); // This causes an unchecked warning wordList.add("programiz"); System.out.println("Word list => " + wordList); ) public static void main(String args()) ( wordsList(); ) ) 

Çıktı

 Kelime listesi => (programiz) 

Yukarıdaki program @SuppressWarnings("unchecked")açıklama kullanılmadan derlenirse , derleyici yine de programı derler ancak aşağıdaki gibi uyarılar verir:

Main.java, denetlenmemiş veya güvenli olmayan işlemler kullanır. Kelime listesi => (programiz)

Uyarıyı alıyoruz

 Main.java, denetlenmemiş veya güvenli olmayan işlemler kullanır 

Aşağıdaki ifade nedeniyle.

 ArrayList wordList = new ArrayList(); 

This is because we haven't defined the generic type of the array list. We can fix this warning by specifying generics inside angle brackets .

 ArrayList wordList = new ArrayList(); 

2. Type annotations

Before Java 8, annotations could be applied to declarations only. Now, type annotations can be used as well. This means that we can place annotations wherever we use a type.

Constructor invocations

 new @Readonly ArrayList() 

Type definitions

 @NonNull String str; 

This declaration specifies non-null variable str of type String to avoid NullPointerException.

 @NonNull List newList; 

This declaration specifies a non-null list of type String.

 List newList; 

This declaration specifies a list of non-null values of type String.

Type casts

 newStr = (@NonNull String) str; 

extends and implements clause

 class Warning extends @Localized Message 

throws clause

 public String readMethod() throws @Localized IOException 

Type annotations enable Java code to be analyzed better and provide even stronger type checks.

Types of Annotations

1. Predefined annotations

  1. @Deprecated
  2. @Override
  3. @SuppressWarnings
  4. @SafeVarargs
  5. @FunctionalInterface

2. Meta-annotations

  1. @Retention
  2. @Documented
  3. @Target
  4. @Inherited
  5. @Repeatable

3. Custom annotations

These annotation types are described in detail in the Java Annotation Types tutorial.

Use of Annotations

  • Compiler instructions - Annotations can be used for giving instructions to the compiler, detect errors or suppress warnings. The built-in annotations @Deprecated, @Override, @SuppressWarnings are used for these purposes.
  • Compile-time instructions - Compile-time instructions provided by these annotations help the software build tools to generate code, XML files and many more.
  • Çalışma zamanı talimatları - Bazı ek açıklamalar, programa çalışma zamanında talimatlar vermek için tanımlanabilir. Bu notlara Java Reflection kullanılarak erişilir.

Ilginç makaleler...