註解 Annotation
阿新 • • 發佈:2018-11-05
註釋:提高程式的可讀性,對程式執行沒有影響。
註解: 給程式帶上一些標記,從而影響編譯器執行程式的結果!
註解的作用:
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();
}