標籤:tor bool 定義 分享 實現 父類 alt 介面 檔案中
Java註解
Annotation(註解)是JDK5.0及以後版本引入的。它可以用於建立文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時間檢查。註解是以‘@註解名’在代碼中存在的,根據註解參數的個數,我們可以將註解分為:標記註解、單值註解、完整註解三類。它們都不會直接影響到程式的語義,只是作為註解(標識)存在,我們可以通過反射機制編程實現對這些中繼資料(用來描述資料的資料)的訪問。另外,你可以在編譯時間選擇代碼裡的註解是否只存在於原始碼級,或者它也能在class檔案中出現。
在寫代碼過程常遇到的註解有@Override、@SuppressWarnings,@Override註解表示重寫父類方法,、@SuppressWarnings註解表示忽略警告資訊
關於四個作用相同註解
@Component("info") 不分層
@Repository("info") dao
@Service("info") biz
@Controller("info") action
@Value() 在一個類中注入普通屬性值
@Resource 在一個類中注入域屬性
@Autowired 在一個類中注入域屬性
註解(Annotation)自訂註解入門
元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation類型,它們被用來提供對其它 annotation類型作說明。Java5.0定義的元註解:
[email protected],
[email protected],
[email protected],
[email protected]
這些類型和它們所支援的類在java.lang.annotation包中可以找到。下面我們看一下每個元註解的作用和相應分參數的使用說明。
@Target:
@Target說明了Annotation所修飾的物件範圍:Annotation可被用於 packages、types(類、介面、枚舉、Annotation類型)、類型成員(方法、構造方法、成員變數、枚舉值)、方法參數和本地變數(如迴圈變數、catch參數)。在Annotation類型的聲明中使用了target可更加明晰其修飾的目標。
作用:用於描述註解的使用範圍(即:被描述的註解可以用在什麼地方)
取值(ElementType)有:
1.CONSTRUCTOR:用於描述構造器
2.FIELD:用於描述域
3.LOCAL_VARIABLE:用於描述局部變數
4.METHOD:用於描述方法
5.PACKAGE:用於描述包
6.PARAMETER:用於描述參數
7.TYPE:用於描述類、介面(包括註解類型) 或enum聲明
使用@interface自訂註解時,自動繼承了java.lang.annotation.Annotation介面,由編譯器自動完成其他細節。在定義註解時,不能繼承其他的註解或介面。@interface用來聲明一個註解,其中的每一個方法實際上是聲明了一個配置參數。方法的名稱就是參數的名稱,傳回值類型就是參數的類型(傳回值類型只能是基本類型、Class、String、enum)。可以通過default來聲明參數的預設值。
定義註解格式:
public @interface 註解名 {定義體}
註解參數的可支援資料類型:
1.所有基礎資料型別 (Elementary Data Type)(int,float,boolean,byte,double,char,long,short)
2.String類型
3.Class類型
4.enum類型
5.Annotation類型
6.以上所有類型的數組
自訂註解案例:
1.自訂註解
1 @Target(ElementType.METHOD)2 @Retention(RetentionPolicy.RUNTIME)3 @Documented4 public @interface Apple {5 String name();6 String sex() default "男";7 String phone() default "15931787945";8 int age() default 2;9 }
2.使用註解的類:
1 public class AppleTest {2 @Apple(name="張朵朵")3 public void show(){4 5 }6 }
3.提取註解參數:
1 public class Test20171010{ 2 @Test 3 public void test01(){ 4 Class<AppleTest> appleTestClass = AppleTest.class; 5 try { 6 Apple show = appleTestClass.getMethod("show").getAnnotation(Apple.class); 7 System.out.println(show.name()); 8 System.out.println(show.sex()); 9 System.out.println(show.phone());10 System.out.println(show.age());11 } catch (NoSuchMethodException e) {12 e.printStackTrace();13 }14 }15 }
執行結果:
java自訂註解