2020年9月3日 自定義註解和元註解
阿新 • • 發佈:2020-09-03
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{ }