JAVA核心知识点--元注解详解

深入探究Java核心注解及自定义注解的奥秘 Java作为一门成熟的编程语言,其注解机制为开发者提供了极大的便利。注解不仅能够提供代码的额外信息,还能够被编译器和运行时环境所使用,从而实现更加丰富和动态的编程范式。在本文中,我们将深入探讨Java的核心注解、元注解的实现机制,以及如何自定义注解。 阅读详情

元注解详解

Annotation(注解)

从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。

注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。

注解可以标记在包、类、属性、方法,方法参数以及局部变量上,且同一个地方可以同时标记多个注解。

// 抑制编译期的未指定泛型、未使用和过时警告
@SuppressWarnings({ "rawtypes", "unused", "deprecation" })
// 重写
@Override

meta-annotation(元注解)

除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:
@Target注解
@Retention注解
@Documented注解
@Inherited注解

我们可以使用这4个元注解来对我们自定义的注解类型进行注解,接下来,我们挨个对这4个元注解的作用进行介绍。

@Target注解

Target注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方) 。

Target注解用来说明那些被它所注解的注解类可修饰的对象范围:注解可以用于修饰 packages、types(类、接口、枚举、注解类)、类成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数),在定义注解类时使用了@Target 能够更加清晰的知道它能够被用来修饰哪些对象,它的取值范围定义在ElementType 枚举中。

public enum ElementType {
 
    TYPE, // 类、接口、枚举类
 
    FIELD, // 成员变量(包括:枚举常量)
 
    METHOD, // 成员方法
 
    PARAMETER, // 方法参数
 
    CONSTRUCTOR, // 构造方法
 
    LOCAL_VARIABLE, // 局部变量
 
    ANNOTATION_TYPE, // 注解类
 
    PACKAGE, // 可用于修饰:包
 
    TYPE_PARAMETER, // 类型参数,JDK 1.8 新增
 
    TYPE_USE // 使用类型的任何地方,JDK 1.8 新增
 
}



//使用方法  
@Target(type=ElementType.METHOD)

@Retention注解

Reteniton注解的作用是:描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时) 。

Reteniton注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在RetentionPolicy枚举中。

public enum RetentionPolicy {
 
    SOURCE,    // 源文件保留
    CLASS,       // 编译期保留,默认值
    RUNTIME   // 运行期保留,可通过反射去获取注解信息
}

@Documented注解

Documented注解的作用是:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。

为了验证Documented注解的作用到底是什么,我们创建一个带有 @Documented 的自定义注解类。 生成帮助文档时会显示此注解信息

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
 
@Documented
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface MyDocumentedtAnnotation {
 
	public String value() default "这是@Documented注解为文档添加的注释";
}

@Inherited注解

Inherited注解的作用是:使被它修饰的注解具有继承性(如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解)。

接下来我们使用代码来进行测试,首先创建一个被@Inherited修饰的注解类MyInheritedAnnotation。

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
@Inherited
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyInheritedAnnotation {
 
	public String name() default "pengjunlee";
}

创建一个带有 MyInheritedAnnotation 注解的父类和一个无任何注解的子类。

@MyInheritedAnnotation(name="parent")
public class Parent {
 
}
public class Child extends Parent{
 
	public static void main(String[] args) {
		Class<Child> child=Child.class;
		MyInheritedAnnotation annotation = child.getAnnotation(MyInheritedAnnotation.class);
		System.out.println(annotation.name());
	}
}

运行程序,打印结果如下:

parent
什么是无人机电源管理模块?电源管理模块有什么用处? 我来描述一下我的问题情景,电源管理模块的定义是,这里给出这个PX4官方对于电源管理模块的一些介绍,补充一下锂电池的放电原理大家就可以更好理解为什么需要电源管理模块 阅读详情

相关推荐

Easymesh之拓扑模块(二)

介绍 easymesh 拓扑消息:Topo discovery、Topo notification、Topo query、Topo response

qq_53619687的博客 2152

java注解-自定义注解的实现

注解浅解

胡云峰的博客 4722

ST-LINK调试STM32H743必看:CubeMX工程中缺失的这行代码导致程序跑飞

本文深入剖析了使用ST-LINK调试STM32H743时,因CubeMX工程中缺失电源电压档位配置代码而导致程序跑飞或出现“Can not access memory”错误的问题。文章解释了H7系列电源与时钟耦合的核心原理,提供了具体的代码修复方案和系统化的调试排查思路,帮助开发者从根本上解决这一常见调试困境。

weixin_29191669的博客 280

Java常用注解(Annotation)详解汇总

元注解(用来修饰注解的注解) @Target(Elemetn.) 注解对谁有效 取值(ElementType)有:     1.CONSTRUCTOR:用于描述构造器     2.FIELD:用于描述域     3.LOCAL_VARIABLE:用于描述局部变量     4.METHOD:用于描述方法     5.PACKAGE:用于描述包     6.PARAMETER:用于描述参数     7.TYPE:用于描述类、接口(包括注解类型)或enum声明 @Retention(RetentionPoli

布诺的博客 1万+

JAVA + 海康威视SDK + FFmpeg+ SRS 实现海康威视摄像头二次开发

海康威视SDK接入方案摘要 本文介绍了使用海康威视官方SDK开发物联网平台摄像头接入功能的完整方案。系统采用Java后端集成HCNetSDK控制摄像头,通过FFmpeg将RTSP流转为RTMP推送到SRS流媒体服务器,前端基于HTTP-FLV协议实现视频播放。文章详细说明了开发准备工作,包括SDK下载、SRS部署、FFmpeg安装等关键步骤,并提供了数据库表设计和接口定义。核心部分展示了如何集成海康SDK,包括提取必要代码、加载DLL文件、配置打包插件等具体实现细节,最终形成了一套支持实时预览、回放和下载的

2401_83057947的博客 2261

ESP32接入扣子(Coze) API使用自定义智能体

本示例将使用ESP32开发板通过WiFi接入 **Coze API**,实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题,ESP32将通过Coze API与智能体进行通信,并返回对应的回复。本文将详细介绍了如何通过HTTP请求和JSON解析来与API进行交互,并给出完整的代码示例。

宁子希的博客 1万+

Java 注解与元注解详解

摘要:Java注解是JDK5引入的元数据机制,用于为代码提供附加信息而不影响逻辑。文章详细解析了注解的核心价值、标准注解(如@Override)、元注解(Target/Retention等)及其使用场景,并介绍了自定义注解的开发规范与处理机制(编译时/运行时)。同时涵盖Java8+对注解的增强(类型注解、重复注解)及在Spring等框架中的典型应用,为开发者提供了全面的注解技术参考。

csdn_tom_168的博客 794

AIDD机器学习深度学习药物发现与设计教程总结

AIDD(AI Drug Discovery & Design):是近年来非常火热的技术应用,且已经介入到新药设计到研发的大部分环节当中,为新药发现与开发带来了极大的助力。倾向于机器对数据库信息的自我学习,可以对数据进行提取和学习,一定程度上避免了化合物设计过程中的试错路径,同时还会带来很多全新的结构,为药物发现打破常规的结构壁垒。覆盖了机器学习和深度学习,能与新药研发相结合并实质性的应用到靶点预测、高通量筛选、药物设计、药物的ADMET性质预测等;且算力方面,由早期应用于药物发现领域的决策树、随机

wutianlin0723的博客 6814

【Java】Java元注解

Java中的元注解@Target和@Retention用于定义自定义注解的使用规则和行为。@Target指定注解可以应用的场景,如方法、类或字段,而@Retention则决定注解的生命周期,如是否在运行时可用。通过反射机制,可以在运行时读取注解信息,并根据注解内容动态调整程序行为。这种结合反射和注解的方式广泛应用于AOP、依赖注入、ORM框架等场景,实现日志记录、事务管理、权限控制等功能。

weixin_44624036的博客 1084

Autodesk Genuine Service卸载失败?试试这个隐藏文件删除法(Win8-Win11通用)

本文针对Autodesk Genuine Service在Windows系统(Win8-Win11)中卸载失败的常见难题,提供了深度解析与根治方案。核心方法是手动定位并删除两个关键的隐藏文件(ProductInformation.pit和id.dat),以解除文件锁定或数据损坏导致的卸载障碍,随后再通过标准流程即可成功卸载。该方法通用性强,能有效解决这一困扰设计师和工程师的顽固问题。

weixin_29220405的博客 1469

实战分享:如何利用svchost进程绕过360防护(附完整Shellcode注入教程)

本文深入解析系统进程安全防护机制,探讨svchost等关键进程的安全特性与防护策略。详细分析安全软件的行为检测和内存保护技术,提供系统加固与监控实践建议,助力企业构建多层次防御体系,有效应对潜在安全威胁。

weixin_30752699的博客 99

【Java核心知识点】Java注解

Java注解是用于增强代码功能的元数据,编译器或运行时可根据注解信息执行特定操作。注解通过@interface定义,可包含多个参数,支持默认值设置。Java提供了5种元注解:@Target指定注解使用范围,@Retention控制生命周期,@Inherited决定是否可继承,@Documented影响文档生成,@Repeatable允许重复注解。注解参数类型限定为基本类型、String、Class、枚举、注解及其数组,默认public访问权限。合理使用注解能提升代码的可读性和功能性。

m0_50020922的博客 670

鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析

本文详细解析了鱼眼双目测距的完整流程,从OpenCV标定到SGBM匹配,涵盖标定、校正、匹配和测距四个关键阶段。通过实战经验分享,帮助开发者解决鱼眼镜头强畸变带来的测距挑战,提升测距精度至5%以内。特别适合机器人导航、自动驾驶和VR领域的开发者参考。

weixin_27298377的博客 122

Java最新玩转Java注解:元注解、内置注解、自定义注解的原理和实现,做了6年的Java

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!大家看完有什么不懂的可以在下方留言讨论也可以关注。本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取return “我是重新定义过的toString方法”;

2401_84024576的博客 790

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

元注解(Meta-Annotations)详解

元注解是用于定义其他注解行为的注解,Java提供了5种核心元注解(Java 8新增@Repeatable),以下是它们的详细说明:

weixin_51288065的博客 790

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

自定义注解及元注解详解

在 Java 中,自定义注解不仅是通过@interface关键字来定义,还可以使用多个元注解来指定注解的行为和特性,如@Target@Retention和@Inherited这四个核心元注解。

2301_77646169的博客 743

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java-Spring入门指南(八)注解,内置注解,元注解,自定义注解

Java注解是编程中的重要工具,本文系统介绍了注解的核心概念、内置注解和元注解的使用。主要内容包括: 注解的本质:既能解释程序,又能被程序读取执行逻辑 三种常用内置注解: @Override:确保方法正确重写父类方法 @Deprecated:标记过时元素 @SuppressWarnings:抑制特定编译警告 元注解的用法: @Target:限定注解作用范围 @Retention:控制注解生命周期 @Documented:使注解出现在文档中 @Inherited:实现注解继承 注解与反射的关系:通过反射机制读

2402_83322742的博客 1018

java元注解

深入理解java注解 1.元注解(meta-annotation) 1.1作用 负责注解其他注解,java5.0定义了4个标准meta-annotation类型,它被用来提供对其它annotation进行说明。 @Target @Retention @Documented @Inherited 这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下...

qq_38483191的博客 340

Java 标准注解(内置注解+元注解)的详细说明及使用场景

Java 标准注解(内置注解+元注解)的详细说明及使用场景

爱的叹息的专栏 1190

java——注释;元注解(了解)

java——注释:1、@Override: 限定某个方法,是重写父类方法, 该注解只能用于方法;2、@Deprecated: 用于表示某个程序元素(类, 方法等)已过时;3、@SuppressWarnings: 抑制编译器警告;元注解(了解):1、Retention //指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME;2、Target // 指定注解可以在哪些地方使用;3、Documented //指定该注解是否会在 javadoc 体现;4、Inherited //子类会继承父类注

Good_Starry的博客 1206

java 注解 详解

java 注解 详解

T_Y_F_的博客 789

元注解介绍

作用:表示使用该注解的元素被javadoc或类似工具文档化,它应用于类型声明,类型声明的注解会影响客户端对注解元素的使用。如果一个类型声明添加了Doumented注解,那么它的注解会成为被注解元素的公共API的一部分,@Documented是一个标记注解。作用:表示一个注解类型会被自动继承,如果用户中类声明的时候查询注解类型,同时类声明中也没有这个类型的注解,那么注解类型会自动查询该类的父类,这个过程将会不停的重复,直到该类型的注解被找到为止,或是到达类结构的顶层。作用:用于描述注解的使用范围。

vianiubi的博客 607
上一篇: 自定义注解实现权限校验实战
下一篇: 为什么要学习源码?学习源码对我们有用吗?
happytaohaha
博客等级 码龄9年 37粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值