註解
使用@interface自訂註解時,自動繼承了java.lang.annotation.Annotation接口,由編譯程式自動完成其他細節。在定義註解時,不能繼承其他的註解或介面。 @interface用來宣告一個註解,其中的每一個方法實際上是聲明了一個配置參數。方法的名稱就是參數的名稱,回傳值型別就是參數的型別(傳回值型別只能是基本型別、Class、String、enum)。可以透過default來聲明參數的預設值。
定義註解格式:
public @interface 註解名稱{定義體}
所有類型支援資料:參數的可支援資料類型 1. at,boolean,byte,double, char,long,short)
2.String類型
3.Class類型## 5.Annotation類型
6.以上所有類型的陣列
直接上程式碼:
import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 定义一个注解 */ @Target(ElementType.METHOD) // 这是一个对方法的注解,还可以是包、类、变量等很多东西 @Retention(RetentionPolicy.RUNTIME) // 保留时间,一般注解就是为了框架开发时代替配置文件使用,JVM运行时用反射取参数处理,所以一般都为RUNTIME类型 @Documented // 用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化 public @interface OneAnnotation { // 定义注解的参数,类型可以为基本类型以及String、Class、enum、数组等,default为默认值 String parameter1() default ""; int parameter2() default -1;使用註解的類別
/** * 一个用到了自定义的注解的类 */ public class OneClass { @OneAnnotation(parameter1="YES", parameter2=10000) public void oneMethod () { }擷取註解參數
import java.lang.reflect.Method; public class TestThis { public static void main(String[] args) throws Exception { // 提取到被注解的方法Method,这里用到了反射的知识 Method method = Class.forName("OneClass").getDeclaredMethod("oneMethod"); // 从Method方法中通过方法getAnnotation获得我们设置的注解 OneAnnotation oneAnnotation = method.getAnnotation(OneAnnotation.class); // 得到注解的俩参数 System.out.println(oneAnnotation.parameter1()); System.out.println(oneAnnotation.parameter2()); }測試結果:#YES10000相關文章:
Java自訂註解
全面解析Java註解
以上是【java】自訂註解的用法-教學詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!