歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java 8 角度看注解類型

Java 8 角度看注解類型

日期:2017/3/1 9:29:01   编辑:Linux編程

1、Java 8除了在繼承關系上的限制(不能添加泛型聲明也不能添加extends繼承另外的接口),聲明時用@interface而不是interface以外,注解類型和普通接口沒有區別

2、注解類型中可以包含多個元素,通過方法聲明形式來定義,這些方法的聲明不能有任何參數或類型參數,也沒有方法體;方法返回值類型只能是基本類型、String、Class、Enum、注解類型和數組類型,數組不支持多維數組。注解類型也可以沒有任何元素。若注解類型只有一個元素,一般命名為value(作為使用時候的默認傳值對象),通過方法後生命default來實現默認值:

public @interface Fuck {
String me() default "author";
int you() default 2;
Class<?> him() default Integer.class;
String[] all() default {"you", "me"};
}

value的時候:

public @interface ComeOn {
String value() default "";
}

例子:

@ComeOn("Shit")
@Fuck(me = "Wang8Dan", you = 250, all = {"SB", "XB", "DB"})
public void test() {
System.out.println("OK");
}

3、注解分為兩類:

1)配置注解的元注解

(1)枚舉類型ElementType:TYPE(類型聲明),ANNOTATION_TYPE(注解類型聲明),PACKAGE(包聲明),CONSTRUCTOR(構造函數聲明),FIELD(域聲明),METHOD(方法聲明),PARAMETER(方法參數聲明),LOCAL_VARIABLE(局部變量聲明),其中每種類型代表了這個注解的使用范圍

(2)Rentention:SOURCE(注解只會出現在源碼,不會出現在字節碼),CLASS(注解保留到字節碼,但聲明在局部變量上的任何情況都只出現在源碼),RUNTIME(注解運行時可用,可以通過反射API調用)

(3)Inherited,說明使用此聲明的類,它的子類繼承上述聲明

2)一般注解

(1)Override

(2)Deprecated

(3)SuppressWarning:阻止編譯時拋出的某些警告,使用的時候如:@SuppressWarning("UnChecked")

Copyright © Linux教程網 All Rights Reserved