註解:說明程序的。給計算機看java
註釋:用文字描述程序,給程序員看的程序員
定義:註解,也叫元數據,一種代碼級別的說明。他是JDK1.5及以後版本引入的一個特徵,與類、接口、枚舉是在同一層次,他能夠聲明在包、類數組
、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,註釋ide
做用分類:一、編寫文檔,經過代碼裏面標識的註解生產文檔.net
二、代碼分析,經過代碼裏面標識的註解對代碼進行分析繼承
三、編譯檢查,經過代碼裏標識的註解讓編譯器可以實現基本的編譯檢查接口
JDK中預約義的一些註解:文檔
@Override,檢測被該註釋標註的方法是不是繼承父類(接口)的get
@Deprecated,該註釋標註的內容,表示已過期編譯器
@SuppressWarnings,壓制警告
自定義註解:
格式:一、元註解:用於描述註解的註解
二、public @interface 註解名稱{
屬性;
}
本質:public interface 註解名稱 extends java.lang.annotation.Annotation{}
就是一個接口,該接口默認繼承Annotation接口
屬性:接口中的抽象方法
要求:一、屬性的返回值類型必須爲基本數據類型,String,枚舉,註解,以上類型的數組
二、定義了屬性在使用時要給屬性賦值。
若是定義屬性時使用default關鍵字給屬性默認初始化值,則使用註解時,能夠不進行屬性的賦值
若是隻有一個屬性須要賦值,而且屬性的名稱是value,則value能夠省略,直接定義值便可
元註解:
一、@Target:描述註解可以做用的位置
ElementType取值:一、TYPE:能夠做用於類上
二、METHOD:能夠做用於方法上
三、FIELD:能夠做用於成員變量上
二、@Retention:描述註解被保留的階段
RetentionPolicy取值:RUNTIME:當前被描述的註解,會保留到class字節碼文件中,並被JVM讀取到
三、@Documented:描述註解是否被抽取到API文檔中
四、@Inherited:描述註解是否被子類繼承
在程序中使用註解:
@Target(ElementType.TYPE) @Documented @Retention(RetentionPolicy.RUNTIME) public @ interface MyAnno { String value(); }
public class Demo { public static void main(String[] args) throws Exception{ Class personClass = Person.class; MyAnno anno = (MyAnno) personClass.getAnnotation(MyAnno.class); System.out.println(anno.value()); } }