Java'da Ek Açıklamalar: Türler, Kullanımlar ve Örnekler

Yayınlanan: 2022-05-19

Java gibi bir programlama dilindeki açıklama, Java'nın kaynak koduyla entegre edilebilen sözdizimsel meta verileri ifade eder. Java paketleri, değişkenler, sınıflar, parametreler ve yöntemler gibi çeşitli faktörlere açıklama eklenebilir. Geliştiriciler, Java ek açıklamalarını tıpkı Javadoc etiketleri gibi doğrudan kaynak dosyalardan kolayca okuyabilir.

Java ek açıklamaları, Java derleyicisinin çıktı Java sınıfı dosyalarına dahil edilebilir ve buradan okunabilir. Bu, Java sanal makinesinin ek açıklamaları korumasını ve bunları çalışma zamanında bir yansıma yoluyla okumasını sağlar. Java'da, mevcut olanlardan meta açıklamalar oluşturmak mümkündür.

Java'daki ek açıklamaların bazı temelleri şunlardır:

  1. Ek açıklamalar her zaman bir '@' ile başlar. Örneğin: '@geçersiz kıl', '@target', '@SuppressWarnings' vb.
  2. Ek açıklamalar, derlenmiş bir programın davranışını etkilemez.
  3. Açıklamalar, meta verileri yöntemler, sınıflar, değişkenler vb. gibi program bileşenleriyle ilişkilendirmeye yardımcı olur.
  4. Ek açıklamalar, bir programın derleyici tarafından nasıl işlendiğini etkileyebileceğinden yalnızca yorumlar değildir. Program hakkında ek derleyici bilgileri sunarlar, ancak programın kendisinin bir parçası değildirler. Bu nedenle, bu açıklamalar derlenen programın yürütülmesini etkilemez.

İçindekiler

Java'daki Ek Açıklama Türleri

1. Tek Değer Açıklamaları

Tek değer açıklamaları, yalnızca bir üye içerdiklerinden yalnızca bir steno biçimine izin verir. Ek açıklamanın uygulanmasından sonra üyeye bir değer verilmelidir. Ancak, ek açıklamanın adının belirtilmesi gerekmez. Steno kullanılacaksa üyenin bir değeri olmalıdır. Örneğin:

@TestAnnotation(“test”);

2. Tam Açıklamalar

Tam açıklamalar, veri üyeleri, değerler, çiftler ve adlar gibi çeşitli verilerden oluşur.

Örneğin:

@TestAnnotation(owner=”Rahul”, value=”Sınıf Geeks”)

Dünyanın En İyi Üniversitelerinden Online Yazılım Geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

3. Yinelenen Açıklamalar

Bir açıklama, tekil nesnelere birden fazla kez uygulanabiliyorsa, yinelenen bir açıklama olarak etiketlenir. Yinelenen ek açıklamalar, Java.lang.annotation paketinde tanımlandığı gibi @Repeatable etiketiyle belirtilir. Değer alanı, tekrarlanan detaylandırmanın kapsayıcı türünü gösterir.

Kapsayıcı, bir dizi yinelenen açıklama içeren bir değer alanına sahip bir açıklama olarak tanımlanır. Tekrarlanan bir ek açıklama oluşturmak için önce kap açıklamasını oluşturun ve ardından açıklama türünü @Repeatable ek açıklamasına giriş olarak belirtin.

Örneğin:

// Tekrarlanabilir Açıklama Gösterecek Java Programı

// Gerekli sınıfları içe aktarma

java.lang.annotation.Annotation'ı içe aktarın;

java.lang.annotation.Repeatable'ı içe aktarın;

java.lang.annotation.Retention'ı içe aktarın;

java.lang.annotation.RetentionPolicy'yi içe aktarın;

java.lang.reflect.Method'u içe aktarın;

// Words ek açıklamasını tekrarlanabilir yap

@Retention(RetentionPolicy.RUNTIME)

@Repeatable(MyRepeatedAnnos.class)

@interface Kelimeler

{

String word() varsayılan “Merhaba”;

int değer() varsayılan 0;

}

// kapsayıcı ek açıklaması oluştur

@Retention(RetentionPolicy.RUNTIME)

@interface MyRepeatedAnnos

{

Kelimeler[] değer();

}

genel sınıf Ana {

// Kelimeleri newMethod'da tekrar et

@Kelimeler(kelime = “İlk”, değer = 1)

@Kelimeler(kelime = “İkinci”, değer = 2)

genel statik boşluk newMethod()

{

Ana nesne = yeni Ana();

denemek {

Sınıf<?> c = obj.getClass();

// newMethod için ek açıklama alın

Yöntem m = c.getMethod(“yeniYöntem”);

// Tekrarlanan açıklamayı görüntüle

ek açıklama

= m.getAnnotation(MyRepeatedAnnos.class);

System.out.println(anno);

}

yakalama (NoSuchMethodException e) {

System.out.println(e);

}

}

public static void main(String[] args) { newMethod(); }

}

Son çıktı şöyle olacaktır: @MyRepeatedAnnos(value={@Words(value=1, word=”First”), @Words(value=2, word=”Second”)})

Popüler Yazılım Mühendisliği Kurslarımızı keşfedin

SL. Numara Yazılım Geliştirme Programları
1 LJMU ve IIITB'den Bilgisayar Bilimleri Yüksek Lisansı Caltech CTME Siber Güvenlik Sertifika Programı
2 Tam Yığın Geliştirme Eğitim Kampı Blockchain'de PG Programı
3 Yazılım Geliştirmede Yönetici Yüksek Lisans Programı - DevOps'ta Uzmanlık Tüm Yazılım Mühendisliği Kurslarını Görüntüle

3. İşaret Açıklamaları

İşaretleyici açıklamaları yalnızca bildirim amaçlıdır. Bu ek açıklama ne herhangi bir üye içerir ne de içinde herhangi bir veri bulunur. Tek amacı, bir açıklama olarak bir varlığı sürdürmektir. Örneğin: @Override.

4. Ek açıklamaları yazın

Bu ek açıklamalar, bir türün kullanıldığı her yerde kullanılabilir. Örneğin, bir yöntemin dönüş türüne açıklama ekleyebiliriz. Tür açıklamaları @Target açıklamalarıyla etiketlenir.

Tip açıklamalarını gösterebilen kodlar şunlardır:

// Gerekli sınıfları içe aktarma

java.lang.annotation.ElementType'ı içe aktarın;

java.lang.annotation.Target'ı içe aktarın;

// Bir türe açıklama eklemek için hedef açıklamayı kullanma

@Target(ElementType.TYPE_USE)

// Basit bir tür ek açıklaması bildirme

@interface TypeAnnoDemo{}

// Ana sınıf

genel sınıf GFG {

// Ana sürücü yöntemi

public static void main(String[] args) {

// Bir dizgenin türüne açıklama ekleme

@TypeAnnoDemo String string = “Bu koda bir tür açıklaması eklenmiştir”;

System.out.println(dize);

ABC();

}

// Bir fonksiyonun dönüş tipine açıklama ekleme

statik @TypeAnnoDemo int abc() {

System.out.println(“Bu fonksiyonun dönüş tipi açıklamalı”);

0 döndür;

}

Önceden Tanımlanmış Açıklama Örnekleri

Daha önce bahsettiğimiz birçok önceden tanımlanmış ek açıklama çeşidi vardır. Bir göz atalım:

1. @Geçersiz kıl

Bu işaretleyici açıklaması yalnızca yöntemlerde kullanılabilir. @override ek açıklamasına sahip herhangi bir yöntem, bir üst sınıftan başka bir yöntemin yerini almalıdır. Bu başarısız olursa, bir derleme zamanı hatası tetiklenir. Bu, üst sınıfın gerçekten geçersiz kılındığından ve yalnızca aşırı yüklenmediğinden emin olması gerektiğinden olur.

Geçersiz Kılma Açıklamasını gösterebilen kod:

// 1. sınıf

sınıf Baz

{

public void Display()

{

System.out.println(“Temel ekran()”);

}

public static void main(String args[])

{

Taban t1 = yeni Türetilmiş();

t1.Display();

}

}

// Sınıf 2

// Sınıfın üstüne genişletme

sınıf Türetilmiş, Tabanı genişletir

{

@Geçersiz kıl

public void Display()

{

System.out.println(“Türetilmiş görüntü()”);

}

}

2. @Hedef

Yalnızca başka bir ek açıklamaya ek açıklama olarak kullanılması amaçlanmıştır. @Target, ElementType sabiti olması gereken bir parametreyi kabul eder. Parametre, hangi bildirimlere uygulanabileceğine karar verir. @Target ek açıklaması, yalnızca tekil bir değer yerine birden çok değere sahip olabilir. Bununla birlikte, birden çok değerin bildirilmesi gerekiyorsa, bunun gibi parantezler biçiminde olması gerekir: @Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE}).

@Retention notu, notun saklama durumunu belirlemek için burada kullanılabilir. Bir @Retention ek açıklamasını üç faktör etkiler:

  • Kaynak: Derleyici, ek açıklamaları genellikle kaynak düzeyinde tutulduğu için dikkate almaz.
  • Runtime: Çalışma zamanında tutulur.
  • Sınıf: Ek açıklamalar derleme zamanı olarak kalır ve Java programı tarafından dikkate alınmaz.

3. @Devralınan

Bu ek açıklama yalnızca bildirim amacıyla kullanılabilir ve bu nedenle yalnızca belirli sınıf bildirimlerini etkiler. Bir açıklama diğerinin yerini alabilir ve özelliklerini devralabilir. Böylece, üst sınıf, alt sınıfta belirli açıklamaların olup olmadığı kontrol edilebilir. Ancak, açıklama varsa, @Inherited açıklamasını alır.

Örneğin:

// 1. sınıf

sınıf Kullanımdan KaldırılmışTest

{

@Kullanımdan kaldırıldı

public void Display()

{

System.out.println(“Kullanımdan kaldırılan test ekranı()”);

}

}

// Sınıf 2

public class SuppressWarningTest

{

// Ek açıklamanın altına yorum yaparsak, program üretir

// uyarı

@SuppressWarnings({"kontrol edildi", "kullanımdan kaldırma"})

public static void main(String args[])

{

DeprecatedTest d1 = yeni DeprecatedTest();

d1.Display();

}

}

Çözüm

Burada Java'daki ek açıklamaları öğrendik. Ayrıca Java'daki ek açıklama türleri ve bunların Java geliştiricilerinin kolaylıkla sağlam ve ölçeklenebilir programlar oluşturmasına yardımcı olabilecek kullanımları hakkında da bilgi edindik.

Java kavramları hakkında daha fazla bilgi edinmek istiyorsanız, Java, HTML, JS gibi programlama dillerinin yanı sıra diğer yazılım geliştirme araçları ve kitaplıkları hakkında kapsamlı bir anlayış kazanmak için upGrad'ın Yazılım Mühendisliğinde İş Bağlantılı PG Sertifikası en iyi seçeneğinizdir.

Program, alanında giriş seviyesi pozisyonları güvence altına almak isteyen son sınıf öğrencileri veya işsiz mezunlar için tasarlanmıştır. 5 aylık kurs, MERN/Cloud-Native'de uzmanlaşmayı kapsar ve öğrencilerin 5 uygulamalı projeye maruz bırakarak birinci sınıf bir portföy oluşturmalarına yardımcı olur.

Yani, beklemeyin. UpGrad'a gidin ve bugün yerinizi ayırtın!

@jsonproperty ek açıklamaları nelerdir?

Jsonproperty ek açıklamaları, geliştiricilerin serileştirme ve seri durumdan çıkarma sırasında JSON anahtarlarını özellik adlarıyla eşlemelerine olanak tanır. Java'nın varsayılan ayarlarına bağlı olarak, anahtarlar serileştirme sırasında POJO alanlarıyla eşlenir. Json ek açıklamaları, eşlenen adı belirten dize niteliklerini kullanarak bu varsayılan işlevi geçersiz kılmaya yardımcı olur.

Hazırda bekletme ek açıklamaları nedir?

Hazırda Bekletme Açıklamaları, Nesne ve İlişkisel Tabloyu eşlerken meta verileri belirtmek için kullanılan başka bir tekniktir. XML eşleme meta verilerinin yerine kullanılabilecek güçlü ve nispeten yeni bir eşleme yöntemidir. Hazırda bekletme ek açıklamalarını kullanarak, kullanıcılar meta verileri kodu da taşıyan tek bir POJO java dosyasında saklayabilir ve böylece bir tablo yapısını daha iyi anlamaya yardımcı olabilir.

@SuppressWarnings nedir?

@SuppressWarnings ek açıklaması, bastırılmış uyarıların derleyicisine bildirir. Bildirimler ada göre dize biçiminde bulunur. Her türlü beyannameye verilebilir. Java, uyarıları işaretlenmemiş ve kullanımdan kaldırılmış olmak üzere iki sınıfa ayırır. Eski kod, jenerik tabanlı kodla etkileşime girdiğinde, denetlenmeyen bir uyarı üretilir.