Java元注解Retention代码示例介绍

 更新时间:2022年08月27日 09:50:56   作者:niuyongzhi  
注解@Retention可以用来修饰注解,是注解的注解,称为元注解。Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用

1.注解声明:通过@interface就可以声明一个注解。

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface BindView {
    int value();
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Get {
    String value() default "";
}
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Queue {
    String value() ;
}

2. @Target 元注解,注解的注解,它的取值定义在ElementType枚举类中。

@Target注解 用来定义我们自定义注解代码的什么位置。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
public @interface Target {
    ElementType[] value();
}

1)ElementType.FIELD 使用在成员变量上。

2)ElementType.METHOD 使用在成员方法上。

3)ElementType.PARAMETER 使用在方法参数上。

4)ElementType.TYPE 使用在类、接口上。

5)ElementType.ANNOTATION_TYPE 使用在注解上。

3.@Retention 元注解,取值定义在RetentionPolicy枚举类中。

用来定义注解生效的阶段:

1)SOURCE:注解只在源码阶段有效,不会编译到字节码中。

2)CLASS:注解在源码、字节码阶段有效,运行阶段不存在。

3)RUNTIME:注解在源码、字节码、运行阶段有效,也是最长用的。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
public @interface Retention {
    RetentionPolicy value();
}
public enum RetentionPolicy {
    SOURCE,
    CLASS,
    RUNTIME;
    private RetentionPolicy() {
    }
}

2.注解的使用

    @BindView(R.id.start_activity)
    TextView startTextView;
    @Get("http://www.baidu.com")
    Call getPerson(@Queue("name") String name,@Queue("200")int price);
    @Get("http://www.baidu.com")
    Call getPerson();

注解的使用很简单。

注解单独存在没有任何意义,必须配合其他技术。

应用:

1)注解+Apt注解处理器,生产java代码 ,databinding、butterknife、dagger2 hilt

2)注解+代码埋点

3)注解+反射+动态代理 retrofit xUtils lifecycle

以上应用会在后面的文章继续分享。如果通过反射来获取注解上的值,Retrofit框架原理。

到此这篇关于Java元注解Retention代码示例介绍的文章就介绍到这了,更多相关Java Retention内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中的异步方法@Async失效的原因详解

    Spring中的异步方法@Async失效的原因详解

    这篇文章主要介绍了Spring中的异步方法@Async失效的原因详解,@Async属于异步注解,@Async放在方法上标识该方法为异步方法,异步是指进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,需要的朋友可以参考下
    2024-01-01
  • 详解Java List中五种常见实现类的使用

    详解Java List中五种常见实现类的使用

    Java中提供了非常多的使用的List实现类,本文将重点介绍一下常见的五种实现类以及他们的应用场景,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 如何更好的使用Java8中方法引用详解

    如何更好的使用Java8中方法引用详解

    在Java8中,我们可以直接通过方法引用来简写lambda表达式中已经存在的方法,这种特性就叫做方法引用(Method Reference)。下面这篇文章主要给大家介绍了关于如何更好的使用Java8中方法引用的相关资料,需要的朋友可以参考下。
    2017-09-09
  • 教你java面试时如何聊单例模式

    教你java面试时如何聊单例模式

    这篇文章主要给大家介绍了关于Java单例模式推荐的几种模式,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-06-06
  • 在Intellij IDEA中使用Debug(图文教程)

    在Intellij IDEA中使用Debug(图文教程)

    下面小编就为大家带来一篇在Intellij IDEA中使用Debug(图文教程)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 在Java中实现二叉搜索树的全过程记录

    在Java中实现二叉搜索树的全过程记录

    二叉树包含了根节点,孩子节点,叶节点,每一个二叉树只有一个根节点,每一个结点最多只有两个节点,左子树的键值小于根的键值,右子树的键值大于根的键值,下面这篇文章主要给大家介绍了关于如何在Java中实现二叉搜索树的相关资料,需要的朋友可以参考下
    2022-03-03
  • spring-AOP 及 AOP获取request各项参数操作

    spring-AOP 及 AOP获取request各项参数操作

    这篇文章主要介绍了spring-AOP 及 AOP获取request各项参数的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 在SpringBoot项目中获取Request的四种方法

    在SpringBoot项目中获取Request的四种方法

    这篇文章主要为大家详细介绍了SpringBoot项目中获取Request的四种方法,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以学习一下
    2023-11-11
  • 详解Java中二分法的基本思路和实现

    详解Java中二分法的基本思路和实现

    二分法是一个非常高效的算法,它常常用于计算机的查找过程中。本文将通过示例为大家详细讲讲二分法的基本思路和实现,感兴趣的可以了解一下
    2022-08-08
  • Java 截取视频资料中的某一帧作为缩略图

    Java 截取视频资料中的某一帧作为缩略图

    最近项目中有一个需求,就是Java 截取视频资料中的某一帧作为缩略图,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论