Java元注解Retention代码示例介绍
作者:niuyongzhi 发布时间:2023-10-21 02:32:32
标签:Java,Retention,元注解
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框架原理。
来源:https://blog.csdn.net/niuyongzhi/article/details/125837112


猜你喜欢
- 一、return语句执行顺序finally语句是在return语句执行之后,return语句返回之前执行的package exception
- 1 Mybatis-Plus简介Mybatis-Plus 提供了多种方式来执行 SQL,包括使用注解、XML 映射文件和 Lambda 表达
- 本文实例为大家分享了winform实现五子棋游戏的具体代码,供大家参考,具体内容如下利用数组,根据新旧数组值的不同,获取那个点是什么棋子;说
- 前言:Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是sp
- 本文章从头开始介绍Spring集成Redis的示例。Eclipse工程结构如下图为我的示例工程的结构图,采用Maven构建。其中需要集成Sp
- 前些日子有一个项目需要从word文件中取表格数据并进行处理,网上大部分方案都是基于office的com组件实现,但是这样有一个缺点,如果电脑
- 线程锁和条件对象在大多数多线程应用中,都是两个及以上线程需要共享对同一数据的存取,所以有可能出现两个线程同时访问同一个资源的情况,这种情况叫
- C#学习笔记- 浅谈数组复制,排序,取段,元组using System;using System.Collections.Generic;n
- 本文实例讲述了Android编程设计模式之访问者模式。分享给大家供大家参考,具体如下:一、介绍访问者模式是一种将数据操作与数据结构分离的设计
- 今天我们来做一个android上的标签云效果, 虽然还不是很完美,但是已经足够可以展现标签云的效果了,首先来看看效果吧。额,录屏只能录到这个
- 本文实例为大家分享了Android圆形菜单的使用方法,供大家参考,具体内容如下MainActivity.java代码:package sis
- 前言我们来分析一下堆内布局以及Java对象在内存中的布局吧。对象的指向先来看一段代码:package com.zwx.jvm;public
- 1,pair的应用pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一
- Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, doub
- 本文为大家分享的java算法计算阶乘,在学习Java课程时经常会遇到求阶乘问题,今天接跟大家一起探讨一下代码如下:package com.x
- 使用对象访问类中的成员:对象名.成员变量;对象名.成员方法();成员变量的默认值:具体实例代码:public class StudentTe
- 本次数据请求使用postman, postman下载地址:https://www.getpostman.com/一、页面跳转1. 页面跳转@
- 1.固定大小的线程池简介线程池就是在程序启动的时候先建立几个可以使用的线程放在那里,然后等着具体的任务放进去,这个任务基本可以说都是Runn
- 本文介绍了Spring Boot Admin监控服务上下线邮件通知,分享给大家,具体如下:微服务架构下,服务的数量少则几十,多则上百,对服务
- 本文实例讲述了Android编程开发中ListView的常见用法。分享给大家供大家参考,具体如下:一、ListView的使用步骤ListVi