註解: Annotation
1、內置註解:常見的三種內置註解
1)、@Override 表示長些超類中的方法
2)、@Deprecated 表示不建議使用的元素
3)、SuppressWarnings 表示抑制程序中的一些警告
2、元註解(meta-annotation):java.lang.annotion中定義了4個標準的元註解,(前兩個常用)
1)、@Target 表示註解的使用地點
2)、@Retention 註解可以被讀取的範圍
3)、@Documented
4)、@Inherited
自定義註解格式:
元註解(作用是來解釋自定義註解)
public @interface 類名{
參數
}
注意事項:
1、自定義註解時通常需要指定default值,如0,“”(空字符串),-1(表示不存在)
2、如果不指定默認值,使用時就要添加,否者報錯
3、如果自定義註解只有一個參數,建議起名爲value
4、注意一下參數的形式 eg:String[] value() 看起來想函數,其實表示字符串數組
package com.chen.annotation01;
import java.util.Date;
/**
* 認識一下常用的一些註解
* @author Administrator
*
*/
public class Demo01 {
// 重寫方法
@Override
public String toString() {
return "我重寫的";
}
public static void main(String[] args) {
Date data = new Date();
// 不建議使用的方法
data.parse("dsacd");
}
@SuppressWarnings(value = { "all" })// value參數除了all外還有:deprecation、unchecked、finally....
public void test01() {
Date data = new Date();
// 這裏就不警告了
data.parse("dsacd");
}
}
package com.chen.annotation01;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定義註解
* @author Administrator
*
*/
@Target(value = {ElementType.FIELD, ElementType.METHOD})// 適用於註解方法和屬性,還有其他類型
@Retention(value = RetentionPolicy.RUNTIME)// 還有其他兩種類型CLASS、SOURCE 但這種作用範圍最廣
public @interface MyAnnotation {
String str() default "";
int id() default 0;
int x() default -1;
String[] value();
}
package com.chen.annotation01;
/**
* 測試自定義註解
* @author Administrator
*
*/
//報錯,因爲@MyAnnotation定義爲只能用於方法和屬性前面
//@MyAnnotation(id = 1, value = { "aaa" })
public class TestMyAnnotation {
public static void main(String[] args) {
}
@MyAnnotation(id = 1, value = { "aaa" })// 由於value沒有設置默認值,這裏就必須指定
public static void test01() {
}
}