——java中的註解

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity開發</a>、<a href="http://www.itheima.com"target="blank">.Net培訓</a>、期待與您交流! ----------------------

註解的作用:

   1,生成文檔。這是最常見的,也是java 最早提供的註解。常用的有@see @param @return 等

   2,跟蹤代碼依賴性,實現替代配置文件功能。比較常見的是spring 2.5 開始的基於註解配置。

     作用就是減少配置。現在的框架基本都使用了這種配置來減少配置文件的數量。

     以後java的程序開發,最多的也將實現註解配置,具有很大用處;

   3,在編譯時進行格式檢查。如@override 放在方法前,如果你這個方法並不是覆蓋了超類方法,則編譯時就能檢查出。java的內置了3個基本註解,保存在java.lang中:

   1,@SuppressWarnnings("deprecation")用於取消警告

   2,@Deprecated標識該處已經過時。

   3,@Override標識重寫父類的方法或實現接口的方法

   注:

      註解相當於一種標記,在程序中加了註解就等於打上了某種標記

      註解可以在包,類,字段,方法,方法參數及局部變量上使用。

以下是兩個元註解:

   //設置該註解類的生命週期爲存在至運行時,這種稱爲元註解:

     其定義的生命週期有三種值:SOURCE,CLASS,RUNTIME

   @Retention(RetentionPolicy.RUNTIME)

   //設置該註解使用的位置,可以設置多個位置,以數組的方式存儲

   @Target({ElementType.METHOD,ElementType.TYPE,ElementType.CONSTRUCTOR,ElementType.FIELD,ElementType.PACKAGE})

註解的屬性:

   註解中的屬性相當於是某種標示。相當於一個公司的胸牌,如果有胸牌就是該公司員工,否則就不是。

註解的屬性的返回值類型有:

   1--8大基本數據類型:float,double,byte,short,int,long,char,boolean

   2--String類型

   3--Class類型

   4--Annotation註解類型

   5--枚舉類型

   6--以及以上各種類型的數組類型

   注:註解中有一個比較特殊的屬性value()如果只想給value屬性賦值,則就給其他屬性設默認值即可。

註解的定義語法:

    @元註解//可以定義註解的生命週期,及註解使用的位置等。

    @interface 註解名稱{

//代碼體

返回值類型 屬性名() [default 默認值]//defualt語句是爲屬性設置缺省默認值,可以省略

    }

註解的綜合示例代碼:

     自定義的一個註解:

package com.itheima.annotationdemos;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * 自定義的一個註解
 * @author wuyong
 *
 */
@Retention(RetentionPolicy.RUNTIME)//默認值是CLASS
public @interface AnnotationUnit {
	String value();
}

綜合的簡單示例代碼:

其中的代碼要用到上面的自定義註解。

package com.itheima.annotationdemos;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.management.DescriptorKey;

/**
 * 註解的反射調用
 * @author wuyong
 * 三個基本的註解
 *@SuppressWarnnings("deprecation")用於取消警告
 *@Deprecated標識該處已經過時。
 *@Override標識重寫父類的方法或實現接口的方法
 *總結:
 *	1,註解相當於一種標記,在程序中加了註解就等於打上了某種標記
 *	沒加則等於沒有任何標記。標記可以在包,類,字段,方法,方法參數及局部變量上。
 */
@AnnotationClass1(100)
public class AnnotationDemo {

	/**
	 * @param args
	 */
	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		//調用一個過時的方法
		System.runFinalizersOnExit(true);
		
		//判斷指定類型的註解存在於此元素上,則返回 true,否則返回 false。
		if (AnnotationDemo.class.isAnnotationPresent(AnnotationClass1.class)) {
			
			//如果存在該元素的指定類型的註解,則返回對應註解,否則返回 null。
			AnnotationClass1 ad = (AnnotationClass1)AnnotationDemo.class.getAnnotation(AnnotationClass1.class);
			
			//利用獲得的註解對象來進行相應的操作,比如打印出註解,及其屬性。
			System.out.println(ad);
			System.out.println("布爾類型屬性:" + ad.isBoolean());
			System.out.println("char類型屬性:" + ad.isChar());
			System.out.println("long類型屬性:" + ad.isLong());
			System.out.println("Byte類型屬性:" + ad.isByte());
			System.out.println("Double類型屬性:" + ad.isDouble());
			System.out.println("Float類型屬性:" + ad.isFloat());
			System.out.println("Short類型屬性:" + ad.isShort());
			System.out.println("String類型屬性:" + ad.isString());
			System.out.println("Class類型屬性:" + ad.isClass());
			System.out.println("Array類型屬性的長度:" + ad.isArray().length);
			System.out.println("Annotation類型屬性的value值:" + ad.isAnnotation().value());
		}
	}

	//標識該方法爲過時的
	@Deprecated
	public void show() {
		System.out.println("被標識失效的方法");
	}
	//標識重寫
	 @Override
	public boolean equals(Object obj) {
		return true;
	}
}

/**
 * 註解的定義和反射調用
 * @author wuyong
 *註解屬性的返回值類型有:
 *	1--8大基本數據類型:float,double,byte,short,int,long,char,boolean
 *	2--String類型
 *	3--Class類型
 *	4--Annotation註解類型
 *	5--枚舉類型
 *	6--以及以上各種類型的數組類型
 */

//設置該註解類的生命週期爲存在至運行時,次種稱爲元註解:有三種值:SOURCE,CLASS,RUNTIME
@Retention(RetentionPolicy.RUNTIME)

//設置該註解使用的位置,可以設置多個位置,以數組的方式存儲
@Target({ElementType.METHOD,ElementType.TYPE,ElementType.CONSTRUCTOR,ElementType.FIELD,ElementType.PACKAGE})
@interface AnnotationClass {
	/**
	 * 以下是註解的屬性
	 * defualt語句是爲屬性設置缺省值
	 * @return
	 */
	//字符串類型
	String isString() default "blue";
	
	//int類型
	int value();//該屬性是最特殊的,即如果註解中只有一個value屬性時,賦值時就可以省略掉’value =‘ 這一部分直接寫值。
	
	//布爾類型
	boolean isBoolean() default true;
	
	//單精度浮點型
	float isFloat() default 1;
	
	//雙精度浮點類型
	double isDouble() default 1.12;
	
	//char類型
	char isChar() default 'a';
	
	//byte類型
	byte isByte() default 11;
	
	//short類型
	short isShort() default 22;
	
	//long類型
	long isLong() default 1990;
	
	//Class類型
	Class isClass() default String.class;
	
	//數組類型
	int[] isArray() default {1,2,3};
	
	//Annotation註解類型
	AnnotationUnit isAnnotation() default @AnnotationUnit("red");
}

  ---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity開發</a>、<a href="http://www.itheima.com"target="blank">.Net培訓</a>、期待與您交流! ----------------------

發佈了25 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章