1. 程式人生 > >註解 Annotation

註解 Annotation

註釋:提高程式的可讀性,對程式執行沒有影響。

註解: 給程式帶上一些標記,從而影響編譯器執行程式的結果!

 

註解的作用:

1)可以在程式上(類、方法、屬性)攜帶資訊

2) 通過註解簡化(取代)配置檔案(xml或者properties檔案)

 

1 常見註解


//告訴編譯器強制對方法進行覆蓋(重寫)

@Override

public String toString() {

return super.toString();

}

//告訴編譯器壓制警告

@SuppressWarnings("rawtypes")

public List save()

{

List list = new ArrayList();

return list;

}

//提示方法過時

@Deprecated

public void update()

{

}

2 註解語法

public @interface Override {

}

3 自定義註解

public @interface Author {

//宣告屬性

//1)屬性的型別可以是基本型別也可以是陣列型別

//2)使用default給註解屬性一個預設值

// String name();

// String[] name() default "Lynn";

//3)如果屬性名稱為value的話,在引用的時候可以不寫名value

// 一定是第一個。

String value();

}

4 元註解

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})

宣告註解的使用範圍:

TYPE: 註解可以使用在類上

FIELD:成員變數

METHOD:方法

PARAMETER:引數

CONSTRUCTOR: 構造方法

LOCAL_VARIABLE:區域性變數

@Retention(RetentionPolicy.SOURCE)

宣告註解的有效範圍:

RetentionPolicy.SOURCE 註解只要原始碼中有效。

RetentionPolicy.CLASS 改註解在原始碼、位元組碼檔案中有效。(預設)

RetentionPolicy.RUNTIME 註解在原始碼、位元組碼檔案以及執行時有效

 

5 反射註解

@Author("Lynn")

public void testAnno() throws NoSuchMethodException, SecurityException

{

//1)獲取當前方法

Method method = this.getClass().getMethod("testAnno", null);

//2)獲取方法上的註解

Author author = method.getAnnotation(Author.class);

//3)獲取註解中的屬性

String value = author.value();

System.out.println(value);

}

6 單元測試:

單獨測試某個方法或者模組。

要求:

1) 依賴JUnit jar包。

 2) 方法上要加@Test註解

 3) 方法的返回值型別為void

4) 方法是無引數的。

@Test

public void testAnnotation() throws NoSuchMethodException, SecurityException

{

User user = new User();

user.testAnno();

}