Java學習--註解

註釋

給程序員看的
註釋是編寫程序時,寫程序的人給一個語句、程序段、函數等的解釋或提示,能提高程序代碼的可讀性。

註解(Annotation)

給計算機看的
也叫元數據。一種代碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、接口、枚舉是在同一個層次。它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,註釋。

作用

編寫文檔

通過代碼裏標識的註解生成文檔【生成文檔doc文檔】

代碼分析

通過代碼裏標識的註解對代碼進行分析【使用反射】

編譯檢查

通過代碼裏標識的註解讓編譯器能夠實現基本的編譯檢查【Override】

元註解

元註解:用於描述註解的註解

@Target

描述註解能夠作用的位置
* ElementType取值:
* TYPE:可以作用於類上
* METHOD:可以作用於方法上
* FIELD:可以作用於成員變量上

@Retention

描述註解被保留的階段
* @Retention(RetentionPolicy.RUNTIME):當前被描述的註解,會保留到class字節碼文件中,並被JVM讀取到

@Documented

描述註解是否被抽取到api文檔中

@Inherited

描述註解是否被子類繼承

預先定義的註解

@Override :檢測被該註解標註的方法是否是繼承自父類(接口)的

@Deprecated:該註解標註的內容,表示已過時

@SuppressWarnings:壓制警告
* 一般傳遞參數all,例如:@SuppressWarnings(“all”)

自定義註解

格式

元註解
public @interface 註解名稱{
				屬性列表;
			}

本質

註解本質上就是一個接口,該接口默認繼承Annotation接口

public interface 註解名稱 extends java.lang.annotation.Annotation {}
反編譯

1)Javac 編譯爲class字節碼
2)javap將class反編譯未java文件

註解屬性

屬性:接口中的抽象方法

要求
  1. 屬性的返回值類型有下列取值
    * 基本數據類型
    * String
    * 枚舉
    * 註解
    * 以上類型的數組

  2. 定義了屬性,在使用時需要給屬性賦值
    1. 如果定義屬性時,使用default關鍵字給屬性默認初始化值,則使用註解時,可以不進行屬性的賦值。
    2. 如果只有一個屬性需要賦值,並且屬性的名稱是value,則value可以省略,直接定義值即可。
    3. 數組賦值時,值使用{}包裹。如果數組中只有一個值,則{}可以省略

使用註解(解析註解)

在程序使用(解析)註解:獲取註解中定義的屬性值

  1. 獲取註解定義的位置的對象 (Class,Method,Field)

  2. 獲取指定的註解
    getAnnotation(Class)

                 //其實就是在內存中生成了一個該註解接口的子類實現對象
                 public class ProImpl implements Pro{
                     public String className(){
                         return "cn.itcast.annotation.Demo1";
                     }
                     public String methodName(){
                         return "show";
                     }
                 }
    
  3. 調用註解中的抽象方法獲取配置的屬性值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章