Java'da Ek Açıklamalar: Türler, Kullanımlar ve Örnekler
Yayınlanan: 2022-05-19Java 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:
- Ek açıklamalar her zaman bir '@' ile başlar. Örneğin: '@geçersiz kıl', '@target', '@SuppressWarnings' vb.
- Ek açıklamalar, derlenmiş bir programın davranışını etkilemez.
- Açıklamalar, meta verileri yöntemler, sınıflar, değişkenler vb. gibi program bileşenleriyle ilişkilendirmeye yardımcı olur.
- 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.
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.