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);

.....然后进行你需要的操作。

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值