Rumah  >  Artikel  >  Java  >  Penjelasan terperinci tentang mata pengetahuan java: anotasi dan meta-anotasi

Penjelasan terperinci tentang mata pengetahuan java: anotasi dan meta-anotasi

WBOY
WBOYke hadapan
2022-05-13 11:57:181599semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang java, yang terutamanya memperkenalkan isu yang berkaitan dengan anotasi dan meta-anotasi, termasuk pengenalan asas kepada anotasi, pengenalan asas kepada Anotasi, dsb. Mari kita lihat bersama-sama, saya harap ia akan membantu semua orang.

Penjelasan terperinci tentang mata pengetahuan java: anotasi dan meta-anotasi

Kajian yang disyorkan: "tutorial video java"

1. Pengenalan asas kepada anotasi

 Anotasi, juga dikenali sebagai metadata, diperkenalkan dalam JDK1.5 dan versi yang lebih baru dan digunakan untuk mengubah suai dan mentafsir maklumat data seperti pakej, kelas, kaedah, sifat, pembina dan pembolehubah setempat. Ia boleh digunakan untuk membuat dokumentasi, menjejak kebergantungan dalam kod anda, dan juga melakukan semakan masa kompilasi asas.

Anotasi wujud dalam kod dengan '@nama anotasi' Menurut bilangan parameter anotasi, kami boleh membahagikan anotasi kepada tiga kategori: anotasi tanda, anotasi nilai tunggal dan anotasi lengkap. baik hati. Seperti komen, anotasi tidak menjejaskan logik program, tetapi ia boleh disusun atau dijalankan dan bersamaan dengan maklumat tambahan yang dibenamkan dalam kod.

Selain itu, anda boleh memilih sama ada anotasi dalam kod hanya wujud pada tahap kod sumber semasa penyusunan, atau ia juga boleh muncul dalam fail kelas atau masa jalan (SOURCE/CLASS/ RUNTIME ).

Dalam JavaSE, tujuan menggunakan anotasi agak mudah, seperti menandakan fungsi usang, mengabaikan amaran, dsb. Anotasi memainkan peranan yang lebih penting dalam Java EE, seperti digunakan untuk mengkonfigurasi sebarang aspek aplikasi, menggantikan kod rumit dan konfigurasi XML yang ditinggalkan dalam versi lama Java EE.


2. Pengenalan asas kepada Anotasi

1. Tiga Anotasi asas

@Override : Untuk mengehadkan kaedah ialah mengatasi kaedah kelas induk , Anotasi ini hanya boleh digunakan pada kaedah

@Dihentikan : digunakan untuk mewakili elemen atur cara tertentu ( Kategori , Kaedah, dsb. ) Lapuk

@SuppressWarnings : Sekat amaran pengkompil


2 contoh kod

@Override <.>

class Son extends Father{

    @Override
    public void play(){}

}

Nota:

@Override menunjukkan bahawa kaedah main subkelas mengatasi kaedah main kelas induk

 

Jika tiada tulisan di sini @Override Ia masih akan mengatasi lapisan kelas induk

Jika anda menulis anotasi @Override, pengkompil akan menyemak sama ada kaedah itu benar-benar mengatasi kelas induk Kaedah, jika ia benar-benar ditulis semula, kompilasi akan lulus; jika ia tidak ditulis semula, ralat kompilasi akan berlaku.

@Override hanya boleh mengubah suai kaedah, bukan kelas lain, pakej, sifat, dsb.

@Dihentikan

@Deprecated
class A{
    @Deprecated
    public static int name = 1;

    @Deprecated
    public void play(){ }
}

Nota:

Ia bukan tidak boleh menggunakannya ketinggalan zaman, tetapi ia tidak disyorkan, tetapi anda masih boleh menggunakan

Medan, pakej, parameter, dsb.

Ia boleh mencapai keserasian dan peralihan versi baharu dan lama


@

Tekan Amaran

@SuppressWarnings ("all")
public class word{ }

注意:

         关于 SuppressWarnings 作用范围是和你放置的位置相关。比如@SuppressWarnings 放置在 main 方法,那么抑制警告的范围就是 main

         通过 @SuppressWarnings 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。


三、@SuppressWarnings的指定警告类型

关键字 解释
all 抑制所有警告
boxing 抑制与封装/拆装作业相关的警告
cast 抑制与强制转型作业相关的警告
dep-ann 抑制与淘汰注释相关的警告
deprecation 抑制与淘汰的相关警告
fallthrough 抑制与 switch 陈述式中遗漏 break 相关的警告
finally 抑制与未传回 finally 区块相关的警告
hiding 抑制与隐藏变数的区域变数相关的警告
incomplete-switch 抑制与 switch 陈述式(enum case)中遗漏项目相关的警告
javadoc 抑制与 javadoc 相关的警告
nls 抑制与非 nls 字串文字相关的警告
null 抑制与空值分析相关的警告
rawtypes 抑制与使用 raw 类型相关的警告
resource 抑制与使用 Closeable 类型的资源相关的警告
restriction 抑制与使用不建议或禁止参照相关的警告
serial 抑制与可序列化的类别遗漏 serialVersionUID 栏位相关的警告
static-access 抑制与静态存取不正确相关的警告
static-method Sekat amaran yang berkaitan dengan kaedah yang mungkin diisytiharkan sebagai statik
super Sekat amaran yang berkaitan dengan kaedah penggantian tanpa panggilan super
akses sintetik Sekat amaran yang berkaitan dengan akses tidak dioptimumkan kepada kelas dalaman
unqualified-field-access Hentikan amaran berkaitan dengan akses medan gagal
tidak digunakan Sekat amaran yang berkaitan dengan kod yang tidak digunakan dan dinyahaktifkan

4. Meta-anotasi

1. Pengenalan asas

▶ Apakah meta-anotasi:

Meta-anotasi ialah anotasi yang menerangkan anotasi yang mereka anotasikan ialah anotasi yang kami perkenalkan sebelum ini, seperti: @Override, @Deprecated, <.>@SuppressWarnings

▶ Empat anotasi meta:

Pengekalan: Nyatakan skop anotasi, tiga jenis SOURCE, CLASS, RUNTIME

Sasaran: Nyatakan tempat anotasi boleh digunakan

 Didokumentasikan: Nyatakan sama ada anotasi akan ditunjukkan dalam javadoc

 Diwarisi:

▶ Nota tentang anotasi:

                                                                                                                                                                         , anotasi akan wujud dalam fail bytecode kelas, tetapi tidak boleh diperoleh pada masa jalan 🎜>

. Pertama sekali, kita mesti menjelaskan panjang kitaran hayat SUMBER < ①: Secara amnya, jika anda perlu mendapatkan maklumat anotasi secara dinamik pada
masa jalan
, anda hanya boleh menggunakan anotasi RUNTIME; ②: Jika anda ingin mendapatkannya di
masa kompilasi
Untuk melaksanakan beberapa operasi prapemprosesan, seperti menjana beberapa kod tambahan (seperti ButterKnife), gunakan anotasi CLASS; SuppressWarnings, anda boleh menggunakan anotasi SOURCE.

2. Anotasi pengekalan

Penjelasan:


 

hanya boleh digunakan untuk mengubah suai definisi Anotasi,

digunakan untuk menentukan Anotasi

Berapa lama ia boleh dikekalkan, @Rentention mengandungi pembolehubah ahli jenis

Polisi Pengekalan, apabila menggunakan @Rentention ia mestilah nilai Pembolehubah ahli menentukan nilai (terdapat tiga jenis nilai).  Tiga nilai:  

Polisi Pengekalan.SUMBER: Selepas pengkompil menggunakannya, ia terus membuang ulasan dasar ini.

  Polisi Pengekalan.KELAS: Pengkompil akan merekodkan anotasi dalam kelas Dalam fail Apabila berlari Jawa Prosedur  , JVM Anotasi tidak akan disimpan. Ini ialah nilai lalai.                                                 

Polisi Pengekalan.MASA JALANKAN: Pengkompil akan merekodkan anotasi dalam kelas  Dalam fail      .    Apabila berlari  Jawa  Semasa program  , JVM  Anotasi akan dikekalkan      .   Program boleh mendapatkan anotasi ini melalui refleksi. 3. Anotasi sasaran


Penjelasan:

digunakan untuk mengubah suai takrifan Anotasi, menyatakan elemen program mana Anotasi diubah suai boleh digunakan untuk mengubah suai. @Target juga mengandungi pembolehubah ahli bernama nilai. 4 Anotasi yang didokumenkan


Penjelasan:

@Documented: Digunakan untuk menyatakan bahawa kelas Anotasi yang diubah suai oleh meta-anotasi ini akan diekstrak ke dalam dokumen oleh alat javadoc, iaitu anotasi boleh dilihat apabila dokumen dijana.

Nota:   Anotasi yang ditakrifkan sebagai @Documented mesti menetapkan nilai Pengekalan kepada RUNTIME.

5. Anotasi warisan


Penjelasan:

Anotasi yang diubah suai oleh @Inherited akan mempunyai warisan Jika kelas menggunakan anotasi yang diubah suai oleh @Inherited, subkelasnya akan mempunyai warisan secara automatik Anotasi ini<.> mengesyorkan pembelajaran: "tutorial video java"

Atas ialah kandungan terperinci Penjelasan terperinci tentang mata pengetahuan java: anotasi dan meta-anotasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam