Java 註解

一:註解的基本概念

註解也被稱爲元數據,使我們在代碼中添加信息提供了一種形式化的方法,在以後非常方便的使用該數據

Java內置的註解有三個:

@Overried:表示當前的方法將覆蓋超類中的方法

@Deprecated:如果加了該註解,則編譯器將會發出警告

@SuppressWaring:關閉警告信息


自定義註解:

@Retention(RetentionPolicy.RUNTIME)
public @interface StudyAnnoation {

}


這是一個簡單的註解,我們定義一個註解就是在interface前面加上一個@符號,但是這樣,註解只是在CLASS文件中可用,在運行階段將不能使用,對此,Java提供了四種元註解來寫自定義註解

@Target:                作用在什麼地方   ElementType枚舉類提供,

CONSTRUCTOR 構造器聲明

FIELD                    域聲明(包括enum實例)

LOCAL_VARIABLE(局部變量聲明)

METHOD              (方法)

PACKAGE             (包)

PARAMETER         (參數)

TYPE                     (類,接口(包括enum聲明))或enum聲明


@Retention      表示該註解保留到什麼時間       RetentionPolicy枚舉類提供了三個,默認class

SOURCE  編譯器丟棄

CLASS        在class文件中可用,在jvm中不可用

RUNTIME   VM運行期


@Document    表示該註解包含在Javadoc文件中

@Inherited       允許子類繼承父類的註解


測試代碼

@StudyAnnoation
public class AnnoationTest {
	public static void main(String[] args) {
		//測試該註解是否是此類型
		if(AnnoationTest.class.isAnnotationPresent(StudyAnnoation.class)){
			//得到該註解
			Annotation  annoation = Annotation.class.getAnnotation(StudyAnnoation.class);
			System.out.println("StudyAnnoation");
		}
	}

}

二.編寫註解元素

註解元素可用的類型包括

所有的基本類型,String,Class,enum,註解,以上類型的數組

註解元素可用值的限制

註解元素不能具有不確定的值,也就是說必須提供默認值或者在調用時提供值。對於非基本類型的註解元素,其不能用null作爲其值。可以用-1或者""來代替


例:新建一個註解

public @interface AnnoationType {
 String value();
}

改寫第一個註解類,包括一些註解元素

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface StudyAnnoation {
	 int id();
	 String name() default "name";
	 AnnoationType annoationType() default @AnnoationType("annoationType");
}

測試:

@StudyAnnoation(id=1,name = "studyannoation")
public class AnnoationTest {

	public static void main(String[] args) {
		//測試該註解是否是此類型
		if(AnnoationTest.class.isAnnotationPresent(StudyAnnoation.class)){
			//得到該註解
			StudyAnnoation  annoation = AnnoationTest.class.getAnnotation(StudyAnnoation.class);
			//獲取該接口的name方法
			System.out.println(annoation.name());
			System.out.println(annoation.id());
			System.out.println(annoation.annoationType().value());
		}
	}

}

對於在使用註解的時候,傳值有事要加元素名,有時不加,怎麼區分了,只有當註解只有一個元素,並且名爲value時,纔不需要加

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