1. 程式人生 > 實用技巧 >React中JSX的理解

React中JSX的理解

技術標籤:javaspring

宣告註解

宣告一個註解要用到的東西

  • 修飾符
    訪問修飾符必須為public,不寫預設為pubic;
  • 關鍵字
    關鍵字為@interface;
  • 註解名稱
    註解名稱為自定義註解的名稱,使用時還會用到;
  • 註解型別元素
    註解型別元素是註解中內容,可以理解成自定義介面的實現部分;

元註解

@Target

表明該註解可以應用的java元素型別

Target型別描述
ElementType.TYPE應用於類、介面(包括註解型別)、列舉
ElementType.FIELD應用於屬性(包括列舉中的常量)
ElementType.METHOD應用於方法
ElementType.PARAMETER應用於方法的形參
ElementType.CONSTRUCTOR應用於建構函式
ElementType.LOCAL_VARIABLE應用於區域性變數
ElementType.ANNOTATION_TYPE應用於註解型別
ElementType.PACKAGE應用於包
ElementType.TYPE_PARAMETER1.8版本新增,應用於型別變數)
ElementType.TYPE_USE1.8版本新增,應用於任何使用型別的語句中(例如宣告語句、泛型和強制轉換語句中的型別)

@Retention

表明該註解的生命週期

生命週期型別描述
RetentionPolicy.SOURCE編譯時被丟棄,不包含在類檔案中
RetentionPolicy.CLASSJVM載入時被丟棄,包含在類檔案中,預設值
RetentionPolicy.RUNTIME由JVM 載入,包含在類檔案中,在執行時可以被獲取到

@Document

表明該註解標記的元素可以被Javadoc 或類似的工具文件化

@Inherited

表明使用了@Inherited註解的註解,所標記的類的子類也會擁有這個註解

註解配置

例子

@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface
Info { String value() default "tracy"; boolean isDelete(); }
@Data
@Builder
// 為Person類配置了剛剛定義的註解@Info
@Info(isDelete = true)
public class Person {

    /**
     * 姓名
     */
    private String name;

    /**
     * 年齡
     */
    private int age;

    /**
     * 是否有效
     */
    private boolean isDelete;
}

解析註解

public class AnnotationTest {
    public static void main(String[] args) {
        try {
            //獲取Person的Class物件
            Person person = Person.builder().build();
            Class clazz = person.getClass();
            //判斷person物件上是否有Info註解
            if (clazz.isAnnotationPresent(Info.class)) {
                System.out.println("Person類上配置了Info註解!");
                //獲取該物件上Info型別的註解
                Info infoAnno = (Info) clazz.getAnnotation(Info.class);
                System.out.println("person.name :" + infoAnno.value() + ",person.isDelete:" + infoAnno.isDelete());
            } else {
                System.out.println("Person類上沒有配置Info註解!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}




在這裡插入圖片描述