java高級-注解
- 注解概念
- 注解分類
- Andriod support annotations
- 總結(jié)
1.注解概念
1.什么是注解
注解 提供了一種類似注釋的機制,這些的注釋和程序的邏輯沒有關(guān)系的
Annotation(注解)就是java提供了一種元程序中的元素關(guān)聯(lián)任何信息和任何元數(shù)據(jù)(metadata)的途徑和方法
程序可以通過反射
基本的規(guī)則:Annotation不能影響程序代碼的執(zhí)行,無論增加、刪除Annotation,代碼都始終如一的執(zhí)行
2.什么是metadata 元數(shù)據(jù):
1.元數(shù)據(jù)以標(biāo)簽的形式存在于java代碼中
2.元數(shù)據(jù)描述的信息時類型安全的
3.元數(shù)據(jù)需要編譯器之外的工具額外的處理來生成其他的程序部件
4.元數(shù)據(jù)可以只存在于java源代碼級別,也可以存在于編譯之后的class文件內(nèi)部
2.注解分類

圖

圖
1.系統(tǒng)內(nèi)會標(biāo)準注解
1.Override 標(biāo)記型的注解類型
2.Deprecated 代碼過時了
3.SuppressWarnnings 警告
2.元注解
1.@Target 注解所修飾的類型范圍
@Targe(ElementType.Type)-->描述類,接口,
@Rentention(RetentionPolicy.RUNTIME)
@Documented
public @interface Table{
//數(shù)據(jù)表名稱注解,默認值為類名稱
public String tableName() default "className";
}
@Target(ElementType.FIELD)
@interface NoDBColumn{}
2.@Retention
注解保留的時間長短
3.@Documented
4.@Inherited 也是標(biāo)記注解,表明被修飾類可以被繼承
3.Andriod support annotations 。 19 sdk之后
1.Nullness注解
圖
@Nullable
public void setName(@NonNull User user)
2.@ResouceTye
void sayHell(@StringRes int id);
3.Threading 注解
4.Overriding Methods 注解:@CallSuper
@WorkThread
@UiThread
4.總結(jié)
注解時如何被處理的?
編譯時有個插件
Annotation