1. 程式人生 > 實用技巧 >2020年9月3日 自定義註解和元註解

2020年9月3日 自定義註解和元註解

package com.atguigu.test08;

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

/*
 * Java中把註解是看成介面。
 * Java中把列舉看成類。
 * 
 * 註解的三個完整步驟:
 * (1)宣告
 * (2)使用
 * (3)讀取
* * 一、註解的宣告 * 語法格式: * 【修飾符】 @interface 註解名{ * } * * 二、元註解 * 元註解:註解註解的註解,或者換句話說,加在註解上面的註解,叫做元註解 * 1、@Target * 標記這個註解可以用於什麼位置。 * 它由ElementType列舉的常量物件來決定: * 例如:TYPE,FIELD,CONSTRUCTOR等10個位置 * * 2、@Retention * 標記這個註解可以滯留到什麼階段 * 它由RetentionPolicy的3個常量物件來指定: * SOURCE, CLASS, RUNTIME *
SOURCE:原始碼階段.java 只能被編譯器讀取 * CLASS:位元組碼階段.class * RUNTIME:執行時JVM * * 3、@Documented * 標記某個註解是否可以被javadoc.exe讀取到API * * 4、@Inherited * 標記這個註解是否可以被子類繼承
*/ public class TestDefineAnnotation { public static void main(String[] args) { //以下這段程式碼是用到了反射的內容,今天暫時不用看懂,知道是讀取 Class clazz = MyClass.class
; MyAnnotation my = (MyAnnotation) clazz.getAnnotation(MyAnnotation.class); System.out.println(my); } } //使用註解 @MyAnnotation class MyClass{ } class Sub extends MyClass{ } //自定義註解 //@Target(ElementType.METHOD)//這個表示只能用在方法上 @Target({ElementType.METHOD,ElementType.TYPE})//這個表示可以用在方法和型別上面 @Retention(RetentionPolicy.RUNTIME) @Inherited @interface MyAnnotation{ }