Java註解
一、註解的分類:
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]
四、使用自定義註解
1、使用註解的語法:
@<註解名>(<成員名1>=<成員名值1>,<成員名2>=<成員名值2>,...)
@Description(desc="i am eyeColor", author="Mooc Boy", age=19)
public String eyeColor(){
return "red";
}
五、解析註解
概念:通過反射獲取類、函數或成員上的運行時註解信息,從而實現動態控制程序運行的邏輯
Java註解