1. 程式人生 > >Java註解

Java註解

override variable ted 控制 get face ack autowired err

一、註解的分類:

1、按照運行機制分:

1)、源碼註解:只在源碼中存在,.java文件中

2)、編譯時註解:在源碼和.class文件中都存在 如:@Override @Deprecated @Suppvisewarnings

3)、運行時註解:在運行階段起作用,會影響運行邏輯的註解 如:@Autowired

2、按照來源分:

1)、來自JDK的註解

2)、來自第三方的註解

3)、我們自己定義的註解

3、元註解:

註解的註解

二、自定義註解

[email protected]

2、成員以無參數無異常方式聲明

3、可以用default為成員指定一個默認值

4、成員的類型只能是基本類型、String、Class、Annotation、Enumeration

5、如果註解只有一個成員,則成員名必須取名為value(),在使用時可以忽略成員名和賦值號(=)

6、註解類可以沒有成員,沒有成員的註解成為標示註解

@Target({ElementType.METHOD,ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Inherited

@Documented

public @interface Description{

  String desc();

  String author();

  int age() default 18;

}

三、元註解

1)[email protected]

/* */: 註解的作用域

構造方法聲明 CONSTRUCTOR、

字段聲明FIELD、

局部變量聲明LOCAL_VARIABLE、

方法聲明METHOD、

包聲明PACKAGE、

註解類型聲明ANNOTATION_TYPE、

參數聲明PARAMETER、

類接口聲明TYPE

2)[email protected]:生命周期

SOURCE只在源碼顯示,編譯時會丟棄

CLASS編譯時會記錄到class中,運行時忽略

RUNTIME運行時存在,可以通過反射讀取

3)[email protected]:允許子類繼承

4)[email protected]

:生成javadoc時會包含註解信息

四、使用自定義註解

1、使用註解的語法:

@<註解名>(<成員名1>=<成員名值1>,<成員名2>=<成員名值2>,...)

@Description(desc="i am eyeColor", author="Mooc Boy", age=19)

public String eyeColor(){

  return "red";

}

五、解析註解

概念:通過反射獲取類、函數或成員上的運行時註解信息,從而實現動態控制程序運行的邏輯

Java註解