@inherited dalam Java ialah anotasi yang digunakan untuk menandakan anotasi yang akan diwarisi kepada subkelas kelas beranotasi. @inherited ialah anotasi terbina dalam, seperti yang kita tahu bahawa anotasi adalah seperti teg yang mewakili metadata yang memberikan maklumat tambahan kepada pengkompil. Sama seperti anotasi terbina dalam, iaitu keluar dalam Javadoc, adalah mungkin untuk mencipta anotasi meta lain daripada yang sedia ada dalam java. Sebenarnya terdapat dua jenis anotasi, satu jenis anotasi digunakan pada kod java seperti @override dan satu lagi jenis anotasi digunakan pada anotasi lain seperti @target @inherited. Jadi @inherited ialah anotasi yang digunakan pada anotasi lain yang kami ingin cipta subkelas atau kami ingin warisi untuk membuat anotasi takrif pengguna lain.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks
Sintaks @inherited dalam java ialah –
@Inherited public @interface MyAnnotation {// code of the MyAnnotation } @MyAnnotation public class SuperClass { // code of the SuperClass } public class SubClass extends SuperClass { // code of the SubClass }
Seperti dalam sintaks di atas, SubClass kelas diwarisi daripada anotasi @MyAnnotation, kerana ia diwarisi daripada SuperClass dan SuperClass mempunyai anotasi @MyAnnotation.
Bagaimanakah @Inherited berfungsi dalam Java?
Anotasi @Inherited digunakan atau diberi anotasi pada anotasi (MyAnnotation seperti dalam sintaks di atas), yang harus didahulukan oleh @interface. Seterusnya, anotasi ini (MyAnnotation) boleh digunakan di mana-mana sahaja perlu memohon sebagai @MyAnnotation. Anotasi ini boleh digunakan sejurus sebelum pengisytiharan elemen dan boleh digunakan pada mana-mana elemen program seperti pembolehubah, kelas, pembina, kaedah, dll. Apabila anotasi yang ditentukan pengguna ini dianotasi pada superclass, ia diwarisi secara automatik kepada subkelas (subkelas seperti dalam sintaks di atas), seperti yang dapat kita lihat dalam contoh di bawah.
Contoh untuk Melaksanakan anotasi @Inherited dalam Java
Seterusnya, kami menulis kod java untuk memahami anotasi @Inherited dengan lebih jelas dengan contoh berikut di mana kami menggunakan anotasi @Inherited untuk mewarisi dalam subkelas daripada superclass, seperti di bawah –
Contoh #1
Pertama, kami mencipta antara muka untuk anotasi @MyAnnotation, yang mempunyai dua medan, nama dan kod.
Kod: //MyAnnotation.java
package demo; import java.lang.annotation.Inherited; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Inherited @Target ({ElementType.TYPE, ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) public @interface MyAnnotation { String name () default "unknown"; String code () default " "; }
Seterusnya, kami mencipta superclass untuk menggunakan anotasi di atas dengan menganotasi mana-mana kelas atau kaedah atau pembolehubah dan memberikan nama negeri dan kod negeri.
Kod: //Super.java
package demo; import demo.MyAnnotation; @MyAnnotation (name = "Karnataka", code = "KA") public class Super { public String getstateinfo () { return null; } }
Seterusnya, kami menggunakan anotasi kerana ia adalah metadata, yang bermaksud kami sepatutnya boleh mendapatkan metadata atau maklumat ini untuk menggunakan maklumat anotasi apabila kami memerlukannya.
Kod: //Demo.java
//as sub class package demo; import demo.MyAnnotation; import demo.Super; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; public class Demo extends Super { public static void main ( String[] arg ) throws Exception { new Super (); Class <super>obj = Super.class; getstateinfo (obj); Method m = obj.getMethod ("getstateinfo", new Class[]{}); getstateinfo (m); } static void getstateinfo (AnnotatedElement e) { try { System.out.println ("Finding annotations on " + e.getClass ().getName ()); Annotation[] annotations = e.getAnnotations (); for (Annotation a : annotations) { if (a instanceof MyAnnotation) { MyAnnotation stateInfo = (MyAnnotation) a; System.out.println("Name of Annotation :" + stateInfo.annotationType ()); System.out.println("State Name :" + stateInfo.name ()); System.out.println("State code :" + stateInfo.code ()); System.out.println(new Demo ().getClass ().getAnnotation (MyAnnotation.class)); System.out.println(new Super ().getClass ().getAnnotation (MyAnnotation.class)); } } } catch (Exception ex) { System.out.println( ex ); } } }</super>
Output: Apabila kita menjalankan kelas Demo.java, outputnya ialah.
Penjelasan: Seperti dalam kod di atas, anotasi MyAnnotation dicipta juga diberi anotasi oleh @Inherited. Dalam Superclass, anotasi MyAnnotation telah digunakan oleh pernyataan @MyAnnotation dan dianotasi kepada kelas. Dan Demo kelas lain dicipta, iaitu subkelas Superclass kerana ia dilanjutkan kepada Superclass. Lebih jauh dalam kaedah utama () kelas Demo, objek Superclass sedang mencipta dan mengakses kaedahnya iaitu getstateinfo (), melalui kaedah ini melaraskan semua anotasinya dan menyemak sama ada anotasi itu tidak berkaitan MyAnnotation, jika ya, cetak beberapa daripada maklumat seperti yang dapat kita lihat di atas. Tetapi satu perkara penting ialah kelas Demo atau mana-mana elemennya tidak diberi anotasi pada MyAnnotation, tetapi ia masih menunjukkan bahawa MyAnnotation dianotasikan kepada kelas ini kerana ia wujud kepada Superclass dan Superclass diwarisi MyAnnotation.
Seterusnya, kami menulis semula kod java di atas untuk memahami anotasi @Inherited dengan lebih jelas dengan contoh berikut di mana kami tidak akan menggunakan anotasi @Inherited untuk anotasi MyAnnotation (sebagai anotasi yang dibuat dalam contoh di atas) untuk menyemak sama ada anotasi ini diwarisi dalam subkelas daripada superclassnya atau tidak, seperti di bawah –
Contoh #2
Kami akan memastikan kelas Super.java dan Demo.java sama seperti di atas tiada perubahan dalam kelas tersebut, tetapi dalam kelas MyAnnotation.java, kami melakukan sedikit perubahan, cuma kami mengalih keluar anotasi @Inherited untuk dianotasi daripada MyAnnotation, seperti yang kita boleh lihat di bawah –
Kod: //MyAnnotation.java
package demo; import java.lang.annotation.Inherited; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; // no @Inherited @Target ({ElementType.TYPE, ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) public @interface MyAnnotation { String name () default "unknown"; String code () default " "; }
Output: Seterusnya, apabila kita menjalankan kelas Demo.java, outputnya ialah.
Penjelasan: Seperti dalam output di atas, kita dapat melihat bahawa selepas kod keadaan, nilai “null” dicetak, iaitu nilai pulangan bagi pernyataan “new Demo ().getClass () .getAnnotation (MyAnnotation.class)”, yang bermaksud bahawa kelas demo tidak diwarisi (atau diberi anotasi) sebarang anotasi MyAnnotation daripadanya Superclass, kerana anotasi @Inherited tidak dianotasi kepada MyAnnotation untuk mewarisinya dalam subkelas.
Kesimpulan
@inherited in java ialah anotasi terbina dalam yang digunakan pada anotasi lain. Ia digunakan untuk menandakan anotasi yang akan diwarisi kepada subkelas kelas beranotasi. @inherited tersedia dalam pakej java.lang.annotation.Inherited.
Atas ialah kandungan terperinci Java @Diwarisi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa