Java注解解析(二)

java元注解@Target、@Retention-自定义注解 @Target、@Retention及自定义注解的使用 阅读详情

上一篇博客介绍到注解的分类以及每一种注解的特点。这次来说说自定义注解。


在说注解之前先说说元注解。

元注解


元注解简单来说就是注解的注解。
在上一篇博客说到注解根据运行机制可以分为三种。那么我们自定义的注解是属于哪一种呢?其实可以属于任何一种。因为我们可以用元注解给我们自定义的注解标记到底是编译时注解还是运行时注解。
元注解主要有以下几种:
@Target  
用来标注注解的作用域 ,用法: @Target({ElementType.METHOD,ElementType.TYPE})    这个注解的作用是,被这个注解说标注的注解的作用域是类。接口或者方法。 @Target的值可以传入一个或多个:@Target({ElementType.METHOD})和@Target({ElementType.METHOD,ElementType.TYPE}) 都是可以的,具体使用还看具体情况。@Target  的值可以取得值:
ElementType.METHOD  作用于方法声明
ElementType.TYPE   作用于类或方法声明
ElementType.CONSTRUCTOR  作用于构造方法声明
ElementType.FIELD  作用于字段声明
ElementType.PACKAGE  作用于包声明
ElementType.LOCAL_VARIABLE  作用于局部变量声明
ElementType.PARAMETER   作用于参数声明

@Retention 
用来标注注解的作用时机
用法:@Retention (RetentionPolicy.RUNTIME)
RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用


@Inherited  标示性注解运行子类继承  标记了此注解的注解只在被标记的子类有效。可能这句话比较难懂,假如有一个A自定义注解,A注解在定义的时候被标上了@Inherited。而A注解又标注了B类,C类继承了B类。此时注解A的作用只作用于C类。
@Documented 在生成Javadoc时会包含注解

介绍了一些元注解。那么接下来我们来看自定义注解到底是怎样自定义的

自定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface MyAnnotaion {
int age() default 20;
String name();
}
可以看到上面的自定义注解,是一个作用于方法声明的运行时注解
定义注解的格式就是
public @interface 注解名称{

}
然后再自定义的注解里面可以有注解成员。
注解成员的定义格式:String XXX();在定义注解成员的时候可以给注解成员一个默认值:int age() default 20。
要注意的是注解成员的类型只能是基本数据类型以及相应的数组,封装类,String、Class、enums、注解类型。类似于List,Map是非法的。
而且定义的时候必须无参无异常。


下一篇博客将会说到如何解析自定义注解


切面编程-元注解 常见的元注解@Inherited,@Retention,@Target理解 阅读详情

相关推荐

TortoiseGit提示No supported authentication methods available错误

一、问题 在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。 通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题: 不修改TortoiseGit的默认网络SSH client,此时需要为To

Jeffxu_lib的博客 2万+

@Target({ElementType.METHOD, ElementType.TYPE})

 @Target 说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。   作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)   取值(ElementType)有:     1.CONSTRUCTOR:用于描述构造器    

诚的博客 2万+

Figma汉化教程

Figma汉化教程

cc蒲公英的博客 1万+

JAVA注解基础

* 注解在开发中常被我们利用到反射机制中,辅助反射机制做更多灵活的操作* 注解在如今JAVA流行的框架中被大量的营养,简化了以前繁琐的配置工作·* 注解可以在:* 类上,属性上,方法上,构造器上,以及参数上使用* 可以通过java内置的注解@Target来说明当前注解可以应用的位置,对应的值被定义在ElementType上* 例如:* 当可以用于多个位置时,需要定义成数组的方式包含所有ElementType的值,即"{}"包含*/@Target({ElementType.TYPE,ElementType.F

Melody_1943的博客 1639

DSP TMS320C6657中FFT函数的调用与具体使用方法

首先明确一点,C6678中FFT的函数形式为: N : length of FFT in complex samples ptr_x : pointer to complex data input ptr_w : pointer to complex twiddle factor ptr_y : pointer to complex output data brev : pointer to bit reverse table containing 64 entries n_min : should be

Kayboy的博客 3012

#基于原生JS的交互式代码高亮编辑器实现教程

本文介绍了一个轻量级交互式代码高亮编辑器的实现方案。该编辑器采用原生JavaScript开发,支持语法高亮、行号显示、主题切换等核心功能,适合嵌入博客、文档等场景使用。 项目技术栈包括HTML5/CSS3/JavaScript,使用Prism.js实现语法高亮,prettier提供代码格式化功能。编辑器界面分三个区域:顶部工具栏(语言选择/主题切换)、中间编辑区(行号+代码)、底部状态栏(语言/字符数)。 核心功能实现包括:通过contenteditable属性创建可编辑区域,Flex布局实现行号与代码同步

qq_42386733的博客 1035

java注解解析_Java注解详解(二)——自定义注解

先上一段代码有个大概的印象,再慢慢讲解(其实代码注释已经讲解地很清楚了):packagediyDescription;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Inherited;importjava.lang.annota...

weixin_39955732的博客 196

CTF入门RSA维纳攻击

RSA维纳攻击 一.题目描述 适用于e过大或国过小情况下的RSA加密 题干如下: #coding:utf-8 import gmpy2 import libnum e = 54856417509806712596137531985117125938559627187663765776152288580865785539464797248184444737659643755765127505761012086539564616967122137525108154121304264697865568653100

noj_h的博客 2232

Java进阶——注解(二):元注解以及注解的解析

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

lyx200154的博客 432

解决vscode无法运行npm命令的问题(cmd可行)

Powershell以及vscode中npm命令使用不了

无痕坚守本心的博客 2749

Python 爬虫实战:爬取 B 站 UP 主投稿数据,分析更新频率与粉丝互动

摘要:本文基于Python技术实现B站UP主投稿数据的自动化爬取与分析。通过解析B站WBI签名机制和API接口,获取UP主视频的标题、播放量、点赞数等核心数据。采用时间序列分析统计更新频率,结合相关性分析挖掘内容特征与粉丝互动的关联。结果显示编程类视频播放量最高,10-20分钟时长的视频表现最佳,投币数与播放量相关性达0.92。文章详细介绍了接口分析、反爬应对等关键技术,为内容创作者优化策略提供数据支持,同时强调遵守平台规范的爬取原则。

2503_91057718的博客 1535

java反射解析注解_java反射(二)-基于反射和注解的Excel解析工具Demo

基于反射和注解的Excel解析工具Demo原理反射的运用部分通过Class的Field,可以给对应Class的Field字段对应的属性设值注解的运用部分通过给实体类的属性加上注解,和Excel中的表头做关联,就可以在解析Excel的时候,更加灵活需要的poi的包需要依赖的解析Excel的jar包有:poi-3.10-FINAL.jarpoi-ooxml-3.10-FINAL.jarpoi-ooxm...

weixin_36108931的博客 203

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

教会你如何用自己的数据集转换成对应格式的数据集以及如何训练YOLO11-pose关键点检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 5417

java 注解解析_java自定义注解学习(二)_注解详解

上篇文章,我们简单的实现了一个自定义注解,相信大家对自定义注解有了个简单的认识,这篇,这样介绍下注解中的元注解和内置注解整体图示内置注解@Override 重写覆盖这个注解大家应该经常用到,主要在子类重写父类的方法,比如toString()方法package com.kevin.demo;public class Demo1 {@Overridepublic String toString(){r...

weixin_39737636的博客 90

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java注解(二):注解的解析以及应用场景、用注解和反射模拟junit框架代码演示

本文章主要讲解什么是注解的解析、以及注解的解析应用场景(代码演示)、用注解和反射模拟junit框架代码演示

raining优快云的博客 1499

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【框架基础】:全面解析Java注解(二)

注解实战        项目需求        项目说明:项目取自一个公司的持久层架构,用来代替Hibernate的解决方案,核心代码就是通过注解来实现的。        需求:        1)有一张用户表,字段包括用户ID,用户名,昵称,年龄,性别,所在城市,邮箱,手机号。        2)方便的对每个字段或字段的组合条件进行检索,并打印出SQL语句。        3

life is wonderful 776

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java反射(二)-基于反射和注解的Excel解析工具Demo

基于反射和注解的Excel解析工具Demo 原理 反射的运用部分 通过Class的Field,可以给对应Class的Field字段对应的属性设值 注解的运用部分 通过给实体类的属性加上注解,和Excel中的表头做关联,就可以在解析Excel的时候,更加灵活 需要的poi的包 需要依赖的解析Excel的jar包有: poi-3.10-FINAL.jar poi-ooxml-3.

cchengone的博客 1924

深入理解Java注解(五大类注解)

这种分类是基于注解的功能和用途来划分的,主要面向开发者理解 Spring 的分层架构和 Bean 定义。第二种分类:基于注解的语法和设计模式这种分类是从注解的编程模型和设计模式的角度来分析的,是一种更加抽象的理解。这种分类是基于注解的结构和使用模式的角度,更加面向语言设计和注解使用的灵活性。两种分类的对比:维度Spring 五大注解分类编程模型注解分类角度功能和用途注解的设计模式和结构关注点注解如何与 Spring 结合使用注解的语言特性及其技术实现代表注解@Service等@Override。

Mikey76的博客 1752

java注解

1.编译期直接扫描:编译器在编译 Java 代码的时候扫描对应的注解并处理,比如某个方法使用@Override 注解,编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。这个过程是编译器基于自身对 Java 语法规则的理解和实现来完成的,并不涉及运行时反射。2.运行期通过反射处理:像框架中自带的注解(比如 Spring 框架的 @Value、@Component)都是通过反射来进行处理的。

m0_64995001的博客 255

java自定义注解实例_java自定义注解实例

让例子说明一切!类一:元注解,用于规定约束注解生命周期、行为等属性package com.xujie.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Inherited;import java.lang.anno...

weixin_35755640的博客 287

自定义注解的解析器实现方式?

自定义注解必须有对应的解析逻辑(你说的 “解析器类”),只是实现形式不同:方法 / 类注解常用 AOP 切面作为解析器,字段 / 参数注解常用手动反射解析器;AOP 解析器是 “自动解析”(Spring 拦截方法时触发),手动解析器是 “主动调用”(代码中显式调用解析方法);解析器的核心逻辑都是:通过Annotation反射 API()读取注解属性,再执行业务逻辑。

xiaoye3708的博客 111

java注解全面解析

推荐阅读:  我的优快云  我的博客园  QQ群:704621321  我的个人博客 一。全面解析Java注解 1.为什么学习Java注解?学习Java注解有何好处?学完能做什么? (1)能·读懂别人写的代码,特别是框架相关的代码 (2)让编程更加简洁,代码更加清晰 (3)让别人高看一眼 2.Java注解概念 Java提供了一种源程序中的元素任...

爱上游戏开发 2659

【Java 注解】自定义注解 ( 注解解析 )

一、定义注解、 二、使用注解、 三、解析注解、 四、通过注解对象获取注解属性的原理、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2186

Java注解之解析注解

在《Java注解之基本语法》中我们详细说明了Java中注解的基本语法,也通过一个简单的例子演示了一个简单的注解是怎么定义和使用的。我们知道,在实际的业务开发中,简单的会这点东西是远远不够的。在实际开发中我们定义的注解一般会有实际的逻辑意义,可以在运行时改变程序的执行逻辑,下面就接上上一篇文章讲解在Java中解析注解。这里主要分为两个部分进行讲解:类注解解析、方法注解解析。 1. 类注解解析 类...

I_LV_XJ的博客 970

Java-注解解析

Java-注解 文章目录Java-注解一、定义1.1 作用二、预定义注解三、自定义注解3.1 格式3.2 本质3.3 注解内的属性3.4 元注解四、注解解析 一、定义 注解(Annotation),也叫元数据。一种代码级别的说明。JDK1.5之后引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 1.1 作用 ①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】 ②代码分析:通过代码里标识的注解对代码进行分析

你的博客 4027
上一篇: Java注解解析(一)
下一篇: Java注解解析(三)——解析自定义注解
javy_codercoder
博客等级 码龄11年 52粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值