java 注解入门 简书_Java基础-注解
注解是什么?
Java注解(Annotation)又稱為Java標注。可以從字面的意思理解它,其實就是一個標注。他可以根據定義作用于不同的地方。注解對他們注解的代碼沒有直接影響。注解是JDK 5中引入的標注注釋機制。
一句話概括:注解是元數據的一種形式,提供有關于程序但不屬于程序本身的數據。
注解的意義,如何使用注解。
注解就是對某個對象的一個標注。當我們對這個對象有一些特殊需求時,我們可以通過注解區分,來實現這些需求。舉個栗子,如butterknife?的view注入、arouter的輔助類生成飛、反射獲取特定信息然后操作等。
public @interface doClick{ } //?@interface? 創建一個注解
元注解:對注解類的注解。你可以這么簡單的理解。元注解有以下幾個注解:
@Target? 被元注解? 注解的注解的作用范圍
@Retention?被元注解? 注解的注解的存儲階段
@Inherited?被元注解? 注解的注解所作用的類是否可以被繼承(這里指的是注解能否被繼承過去,不是指的類是否可以被繼承)一般不使用
@Documented?被元注解? 注解的注解所作用的類為工具化文檔? 一般不使用。
下面主要描述@Target?和@Retention注解
@Target注解:被@Target注解的作用范圍
ElementType.ANNOTATION_TYPE 可以應用于注解類型。
ElementType.CONSTRUCTOR 可以應用于構造函數。
ElementType.FIELD 可以應用于字段或屬性。
ElementType.LOCAL_VARIABLE 可以應用于局部變量。
ElementType.METHOD 可以應用于方法級注解。
ElementType.PACKAGE 可以應用于包聲明。
ElementType.PARAMETER 可以應用于方法的參數。
ElementType.TYPE 可以應用于類的任何元素。
@Retention
RetentionPolicy.SOURCE - 標記的注解僅保留在源級別中,(編譯器語法檢查)
RetentionPolicy.CLASS - 標記的注解在編譯時由編譯器保留,但 Java 虛擬機(JVM)會忽略。(在編譯時可以通過注解實現一些特殊需求,比如輔助類、腳本、配置文件等。)
RetentionPolicy.RUNTIME - 標記的注解由 JVM 保留,因此運行時環境可以使用它。(反射獲取注解信息?進行特定的操作)
SOURCE 、CLASS?詳見其他框架解析使用.
RUNTIME?結合反射的簡單使用。
如有這么一個注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ExtrasParams {Stringvalue()default "";}
@ExtrasParams
public class A extends Activity{
@ExtrasParams
private string name="123";
}
void main(Activity activity){
Class cls=activity.getClass();
Field[] declaredFields=cls.getDeclaredFields();
//循環Field[]?找到被注解的屬性或者字段。
for(Field field:declaredFields){
//判斷屬性是否被 ExtrasParams注解
if (field.isAnnotationPresent(ExtrasParams.class)) {
//獲取到ExtrasParams?注解? 此時field就是name
ExtrasParams extrasParams =? field.getAnnotation(ExtrasParams.class);
.....然后進行你需要的操作。
}
}
}
總結
以上是生活随笔為你收集整理的java 注解入门 简书_Java基础-注解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一幅图弄清DFT与DTFT,DFS的关系
- 下一篇: 信号处理:傅立叶变换的波形分辨率和频率分