首頁 > Java > java教程 > 【java】自訂註解的用法-教學詳解

【java】自訂註解的用法-教學詳解

php是最好的语言
發布: 2018-08-06 11:42:21
原創
1944 人瀏覽過

註解   

   使用@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());
	}
登入後複製

測試結果:

#YES

10000

相關文章:

Java自訂註解

Java註解教學與自訂註解

#相關影片:

全面解析Java註解

以上是【java】自訂註解的用法-教學詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板