Java'da ek açıklamaların amacı nedir? Bir yorum ile gerçek kod arasında bir yerde oldukları konusunda bu bulanık fikrim var. Programı çalışma zamanında etkiliyorlar mı?
Tipik kullanımları nelerdir?
Java'ya özgü mü? C ++ eşdeğeri var mı?
Java'da ek açıklamaların amacı nedir? Bir yorum ile gerçek kod arasında bir yerde oldukları konusunda bu bulanık fikrim var. Programı çalışma zamanında etkiliyorlar mı?
Tipik kullanımları nelerdir?
Java'ya özgü mü? C ++ eşdeğeri var mı?
Yanıtlar:
Ek açıklamalar esas olarak diğer kodları inceleyen kod tarafından kullanılır. Genellikle, davranışlarını değiştirmek için çalışma zamanında mevcut sınıfları değiştirmek (yani dekore etmek veya sarmak) için kullanılırlar. JUnit ve Hibernate gibi çerçeveler, çerçeveleri kullanmak için kendiniz yazmanız gereken kod miktarını en aza indirmek için ek açıklamaları kullanır.
Oracle, kendi sitesinde kavram ve bunun Java'daki anlamı hakkında iyi bir açıklamaya sahiptir .
Ayrıca, Java'ya özgü mü, C ++ eşdeğeri var mı?
Hayır, ancak VB ve C # aynı şey olan niteliklere sahiptir.
Kullanımları oldukça çeşitlidir. Tipik bir Java örneğinin @Override
kod üzerinde etkisi yoktur, ancak dekore edilmiş yöntem aslında başka bir yöntemi geçersiz kılmıyorsa, derleyici tarafından bir uyarı (veya hata) oluşturmak için kullanılabilir. Benzer şekilde, yöntemler eski olarak işaretlenebilir.
Sonra bir yansıma var. Kodunuza bir sınıf türünü yansıttığınızda, özniteliklere erişebilir ve orada bulunan bilgilere göre hareket edebilirsiniz. Ben Java herhangi örneklerini bilmiyorum ama NET'te bunun yaratmak için derleyici tarafından kullanılır (de) serileştirme , sınıflar için bilgilerini belirlemek bellek düzeni yapıları ve beyan fonksiyonu ithalatı (diğerlerinin yanı sıra) eski kütüphanelerinden. Ayrıca IDE form tasarımcısının nasıl çalıştığını da denetlerler.
/ EDIT: Sınıflardaki öznitelikler, etiket arabirimleriyle karşılaştırılabilir ( Java'da Serileştirilebilir gibi ). Bununla birlikte, .NET kodlama yönergeleri etiket arabirimlerini kullanmamayı söyler. Ayrıca, yöntem düzeyinde değil, yalnızca sınıf düzeyinde çalışırlar.
Anıl iyi bir özet veriyor ve işte bir JUnit ek açıklaması örneği
@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}
Burada @Test
ek açıklama JUnit'e flatfileMissing
yöntemin yürütülmesi gereken bir test olduğunu ve beklenen sonucun fırlatıldığını söylüyor IOException
. Böylece, testlerinizi çalıştırdığınızda, bu yöntem çağrılacak ve bir IOException
atılıp atılmadığına bağlı olarak test başarılı veya başarısız olacaktır .
Ek Açıklamalar ile yapabileceğiniz bazı harika şeyler görmek için JavaBean notlarıma ve açıklama işlemcime bakın .
Kod oluşturmak, derlemeniz sırasında fazladan doğrulamalar eklemek için harikalar ve ben de bunları bir hata mesajı çerçevesi için kullanıyorum (henüz yayınlanmadı - patronlarla görüşmemiz gerekiyor ...).
Birebir tanıma göre bir açıklama, bir öğeye notlar ekler. Aynı şekilde, Java ek açıklamaları, kod hakkında daha fazla bilgi sağlamak için kaynak koduna eklediğimiz etiketlerdir. Java açıklamaları, açıklamalı program öğesi ile bilgileri ilişkilendirir. Java açıklamalarının yanı sıra Java programları, genellikle kaynak kod dosyasındaki yorumlarda bulunan çok sayıda resmi olmayan belgelere sahiptir. Ancak Java ek açıklamaları, açıklamaların biçimini açıklamak için doğrudan açıklama türlerini kullanarak program öğelerine açıklama ekledikleri yorumlardan farklıdır. Java Açıklamaları, bilgileri standart ve yapılandırılmış bir şekilde sunar, böylece işleme araçları tarafından uygun bir şekilde kullanılabilir.
Ayrıntılı olarak okumak için, Java Ek Açıklamaları hakkında güzel bir eğitim var
Java'nın @Override açıklamasını ne zaman kullanıyorsunuz ve neden? Bağlantı, geçersiz kılma notunun (@override) ne zaman kullanılması gerektiğiyle ilgili bir soruyu ifade eder. Bu, ek açıklama kavramının daha iyi anlaşılmasına yardımcı olabilir. Kontrol edin.
EJB söz konusu olduğunda ek açıklamalar, açık bir orta düzey yazılım yaklaşımı yerine örtük orta düzey yazılım yaklaşımını seçmek olarak bilinir; ek açıklama kullandığınızda, API'den tam olarak ihtiyacınız olan şeyi özelleştirirsiniz, örneğin bir banka havalesi için işlem yöntemini çağırmanız gerekir : ek açıklama kullanmadan: kod olacaktır
transfer(Account account1, Account account2, long amount)
{
// 1: Call middleware API to perform a security check
// 2: Call middleware API to start a transaction
// 3: Call middleware API to load rows from the database
// 4: Subtract the balance from one account, add to the other
// 5: Call middleware API to store rows in the database
// 6: Call middleware API to end the transaction
}
Ek Açıklama kullanırken kodunuz, ara yazılım hizmetlerini kullanmak için hantal API çağrıları içermez. Kod temizdir ve iş mantığına odaklanmıştır
transfer(Account account1, Account account2, long amount)
{
// 1: Subtract the balance from one account, add to the other
}