java框架学习——注解/元注解概述及使用案例

news/2024/4/25 19:22:05

前言:

整理下学习笔记,打好基础,daydayup!!!

注解 

注解(Annotation)是java代码里的特殊标记。作用为:让其他程序根据注解信息来决定怎么执行该程序,如:@Override,@Test等。同时可以根据自己的需求自定义注解。

 注解的原理

注解本质是一个接口,java中所有注解都是继承了Annotation接口。

自定义注解

自己定义注解

定义格式: 

public @interface 注释名称{public 属性类型 属性名() default 默认值;
}

例:

public @interface MyTest1 {String value();int no() default 23;}

:如果注解中只有一个value属性,使用注解时,value名称可以不写

示例如下

 注:@注解(...):其实就是一个实现类对象,实现了该注解以及Annotation接口。

元注解

修饰注解的注解称为元注解

Target

作用:声明被修饰的注解能在哪些位置使用

例:

@Target(ElementType.TYPE)//类,接口
TYPE类,接口
FIELD成员变量
METHOD成员方法
PARAMETER方法参数
CONSTRUCTOR构造器
LOCAL_VARIABLE局部变量

Retention

作用:声明注解的保留周期

 例:

@Retention(RetentionPolicy.RUNTIME)//一直保留到运行阶段
SOURCE只作用在源码阶段,字节码文中不存在
CLASS保留到字节码文件阶段,运行阶段不存在
RUNTIME一直保留到运行阶段

注解的解析 

判断类上,方法上,成员变量上是否存在注解,并把注解里的内容解析出来

 和反射分析的用法差不多,有需要的可以看这里

java框架学习——反射概述及简易版框架搭建

解析注解的常用方法如下:

方法说明
public Annotation[ ] getDeclaredAnnotations()获取当前对象上的注解
public T getDeclaredAnnotation(Class<T> annotationClass)获取指定的注解对象
public boolean isAnnotationPresent(Class<Annotation> annotationClass)判断当前对象上是否存在某个注解

示例如下:

 

 案例:

需求:定义若干个方法,若是方法加了MyTest注解,那么触发该方法执行;没有MyTest注解的方法不执行

思路:1,定义一个自定义注解MyTest,使其注解方法,并使其一直存在;2,定义若干个方法,并在部分方法上加上@MyTest修饰,部分方法则不做处理;3,对方法进行注解解析,使带了注解的方法执行方法。

操作如下

整理结束,撒花!!!! 


https://www.xjx100.cn/news/3366611.html

相关文章

Nginx的预定义变量

变量一览 NGINX 提供了一系列预定义变量&#xff0c;可以在配置文件中使用。这些变量提供了关于请求、连接、服务器等信息的访问。以下是一些常用的预定义变量&#xff1a; $arg_PARAMETER: GET 请求参数中的指定参数值。 $args: 请求中的参数字符串。 $binary_remote_addr: …

CIM搭建实现发送消息的效果

目录 背景过程1、下载代码2、进行配置3、直接启动项目4、打开管理界面5、启动web客户端实例项目6、发送消息 项目使用总结 背景 公司项目有许多需要发送即时消息的场景&#xff0c;之前一直采用的是传统的websocket连接&#xff0c;它会存在掉线严重&#xff0c;不可重连&…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python基础中的关于模块的导入&#xff1a; 1&#xff0c;模块的介绍 2&#xff0c;模块的导入方式 3&#xff0c;自定义模块 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基…

阿里云服务器租用价格表,100元可以买哪些配置?

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

Redis 主从复制,哨兵模式,集群

目录 主从复制 主从复制 作用 缺陷 主从复制流程 实现Redis主从复制 哨兵模式 主从复制切换的缺点 哨兵的核心功能 哨兵模式原理 哨兵模式的作用 哨兵结构组成 故障转移机制 主节点的选举 实现哨兵模式 集群(Cluster) redis群集有三种模式&#xff0c;主从复制…

回溯算法|78.子集

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {result.push_back(path); // 收集子集&#xff0c;要放在终止添加的上面&#xff0c;否则会漏掉自…

vue父组件值变化,子组件不刷新的问题(三种方案)

目录 1、在子组件使用 watch 监听 props传过来的值&#xff0c;如果发现改变&#xff0c;调用forceUpdate刷新视图。 2、父组件中声明一个布尔变量&#xff0c;数据发生变化后&#xff0c;切换一下变量状态&#xff0c;可刷新子组件视图。 3、数据发生变化后&#xff0c;在下…

笔记: JavaSE day15 笔记

第十五天课堂笔记 数组 可变长参数★★★ 方法 : 返回值类型 方法名(参数类型 参数名 , 参数类型 … 可变长参数名){}方法体 : 变长参数 相当于一个数组一个数组最多只能有一个可变长参数, 并放到列表的最后parameter : 方法参数 数组相关算法★★ 冒泡排序 由小到大: 从前…