Annotation

使用Annotation功能 Java中提供了Annotation功能,该功能可用于类、构造方法、成员变量、方法、参数等的声明中。该功能并不影响程序的运行,但是对编译器等辅助工具产生影响。 定义Annotation类型 在定义Annotation类型时,也需要用到用来定义接口的interface关键字,但需要在interface关键字前加一个“@”符号,即定义Annotation类型的关键字为@interface,这个关键字隐含的意思是继承了java.long.annotation.Annotation-接口 public @inte 阅读详情

Annotation在java的世界正铺天盖地展开,有空写这一篇简单的annotations的文章,算是关于Annotation入门的文章吧,希望能各位们能抛砖,共同学习......
不讲废话了,实践才是硬道理.

第一部分:了解一下java1.5起默认的三个annotation类型:
一个是@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
一个是@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上.
一个是@SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭.
如果不清楚上面三个类型的具体用法,各位可以baidu或google一下的,很简单的。

第二部分:讲一下annotation的概念先,再来讲一下怎样设计自己的annotation.
首先在jdk自带的java.lang.annotation包里,打开如下几个源文件:

1、源文件Target.java

代码
  1. @Documented  
  2. @Retention(RetentionPolicy.RUNTIME)   
  3. @Target(ElementType.ANNOTATION_TYPE)   
  4. public @interface Target {   
  5.    ElementType[] value();   
  6. }  


其中的@interface是一个关键字,在设计annotations的时候必须把一个类型定义为@interface,而不能用class或interface关键字(会不会觉得sun有点吝啬,偏偏搞得与interface这么像).

2、源文件Retention.java
代码
  1. @Documented  
  2. @Retention(RetentionPolicy.RUNTIME)   
  3. @Target(ElementType.ANNOTATION_TYPE)   
  4. public @interface Retention {   
  5.    RetentionPolicy value();   
  6. }  

 

看到这里,大家可能都模糊了,都不知道在说什么,别急,往下看一下.
在上面的文件都用到了RetentionPolicy,ElementType这两个字段,你可能就会猜到这是两个java文件.的确,这两个文件的源代码如下:

3、源文件RetentionPolicy.java

代码
  1. public enum RetentionPolicy {   
  2.  SOURCE,   
  3.  CLASS,   
  4.  RUNTIME   
  5. }  

这是一个enum类型,共有三个值,分别是SOURCE,CLASS 和 RUNTIME.
SOURCE代表的是这个Annotation类型的信息只会保留在程序源码里,源码如果经过了编译之后,Annotation的数据就会消失,并不会保留在编译好的.class文件里面。
ClASS的意思是这个Annotation类型的信息保留在程序源码里,同时也会保留在编译好的.class文件里面,在执行的时候,并不会把这一些信息加载到虚拟机(JVM)中去.注意一下,当你没有设定一个Annotation类型的Retention值时,系统默认值是CLASS.
第三个,是RUNTIME,表示在源码、编译好的.class文件中保留信息,在执行的时候会把这一些信息加载到JVM中去的.
  举一个例子,如@Override里面的Retention设为SOURCE,编译成功了就不要这一些检查的信息;相反,@Deprecated里面的Retention设为RUNTIME,表示除了在编译时会警告我们使用了哪个被Deprecated的方法,在执行的时候也可以查出该方法是否被Deprecated.

 

4、源文件ElementType.java

代码
  1. public enum ElementType {   
  2.  TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR,   
  3.  LOCAL_VARIABLE, ANNOTATION_TYPE,PACKAGE   
  4. }  

@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上的.说明一下:TYPE(类型), FIELD(属性), METHOD(方法), PARAMETER(参数), CONSTRUCTOR(构造函数),LOCAL_VARIABLE(局部变量), ANNOTATION_TYPE,PACKAGE(包),其中的TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上.
另外,从1的源代码可以看出,@Target自己也用了自己来声明自己,只能用在ANNOTATION_TYPE之上.
如果一个Annotation类型没有指明@Target使用在哪些元素上,那么它可以使用在任何元素之上,这里的元素指的是上面的八种类型.
举几个正确的例子:
@Target(ElementType.METHOD)
@Target(value=ElementType.METHOD)
@Target(ElementType.METHOD,ElementType.CONSTRUCTOR)
具体参考一下javadoc文档

上面一下1和2的源文件,它们都使用了@Documented,@Documented的目的就是让这一个Annotation类型的信息能够显示在javaAPI说明文档上;没有添加的话,使用javadoc生成API文档的时候就会找不到这一个类型生成的信息.
另外一点,如果需要把Annotation的数据继承给子类,那么就会用到@Inherited这一个Annotation类型.

第三部分:下面讲的设计一个最简单的Annotation例子,这一例子共用四个文件;
1、Description.java
代码
  1. package lighter.javaeye.com;   
  2.   
  3. import java.lang.annotation.Documented;   
  4. import java.lang.annotation.ElementType;   
  5. import java.lang.annotation.Retention;   
  6. import java.lang.annotation.RetentionPolicy;   
  7. import java.lang.annotation.Target;   
  8.   
  9. @Target(ElementType.TYPE)   
  10. @Retention(RetentionPolicy.RUNTIME)   
  11. @Documented  
  12. public @interface Description {   
  13.     String value();   
  14. }  


说明:所有的Annotation会自动继承java.lang.annotation这一个接口,所以不能再去继承别的类或是接口.
最重要的一点,Annotation类型里面的参数该怎么设定:
第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型.
第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String value();这里的参数成员就为String.
第三,如果只有一个参数成员,最好把参数名称设为"value",后加小括号.例:上面的例子就只有一个参数成员.

 

2、Name.java

代码
  1. package lighter.javaeye.com;   
  2.   
  3. import java.lang.annotation.Documented;   
  4. import java.lang.annotation.ElementType;   
  5. import java.lang.annotation.Retention;   
  6. import java.lang.annotation.RetentionPolicy;   
  7. import java.lang.annotation.Target;   
  8.   
  9.  //注意这里的@Target与@Description里的不同,参数成员也不同   
  10. @Target(ElementType.METHOD)   
  11. @Retention(RetentionPolicy.RUNTIME)   
  12. @Documented  
  13. public @interface Name {   
  14.     String originate();   
  15.     String community();   
  16. }  

 

3、JavaEyer.java

代码
  1. package lighter.javaeye.com;   
  2.   
  3. @Description("javaeye,做最棒的软件开发交流社区")   
  4. public class JavaEyer {   
  5.     @Name(originate="创始人:robbin",community="javaEye")   
  6.     public String getName()   
  7.     {   
  8.         return null;   
  9.     }   
  10.        
  11.     @Name(originate="创始人:江南白衣",community="springside")   
  12.     public String getName2()   
  13.     {   
  14.         return "借用两位的id一用,写这一个例子,请见谅!";   
  15.     }   
  16. }  

4、最后,写一个可以运行提取JavaEyer信息的类TestAnnotation
代码
  1.  package lighter.javaeye.com;   
  2.   
  3.   import java.lang.reflect.Method;   
  4.   import java.util.HashSet;   
  5.   import java.util.Set;   
  6.   
  7.   public class TestAnnotation {   
  8.     /**  
  9.      * author lighter  
  10.      * 说明:具体关天Annotation的API的用法请参见javaDoc文档  
  11.      */  
  12.        public static void main(String[] args) throws Exception {   
  13.        String  CLASS_NAME = "lighter.javaeye.com.JavaEyer";   
  14.        Class  test = Class.forName(CLASS_NAME);   
  15.        Method[] method = test.getMethods();   
  16.        boolean flag = test.isAnnotationPresent(Description.class);   
  17.         if(flag)   
  18.         {   
  19.             Description des = (Description)test.getAnnotation(Description.class);   
  20.             System.out.println("描述:"+des.value());   
  21.             System.out.println("-----------------");   
  22.         }   
  23.            
  24.         //把JavaEyer这一类有利用到@Name的全部方法保存到Set中去   
  25.         Set<Method> set = new HashSet<Method>();   
  26.         for(int i=0;i<method.length;i++)   
  27.         {   
  28.             boolean otherFlag = method[i].isAnnotationPresent(Name.class);   
  29.             if(otherFlag) set.add(method[i]);   
  30.         }   
  31.         for(Method m: set)   
  32.         {   
  33.             Name name = m.getAnnotation(Name.class);   
  34.             System.out.println(name.originate());   
  35.             System.out.println("创建的社区:"+name.community());   
  36.         }   
  37.      }   
  38. }  

5、运行结果:
描述:javaeye,做最棒的软件开发交流社区
-----------------
创始人:robbin
创建的社区:javaEye
创始人:江南白衣
创建的社区:springside

 

这一篇文章写了两个小时有多啦,也算是一篇关于设计自定的Annotation的入门篇啦;另外,特在处声明,如果转载请注明出处:http://lighter.javaeye.com。
参考资料:
1、http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html
2、http://caterpillar.onlyfun.net/Gossip/
3、http://calvin.javaeye.com/blog/33210


声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。

相关文章:    什么是Annotation?    侵入,无侵入? Annotation vs Interface

推荐链接:    免费下载IBM社区版软件,体验高效开发.    京沪穗蓉四地免费注册,SOA技术高手汇聚交锋.
返回顶端  1楼
浏览发表者的主页 阅读会员资料 发送站内短信   最后更新:2007-05-11 17:48       加入在 Annotation 专栏 专栏  
Norther
等级: 1星会员
Norther的博客:Norther

文章: 143
积分: 158
圈子: 传统文化

       时间: 2006-11-30 10:07    评级:   11111 (0位会员评分)        

非常不错啊,照着做了一遍就成功了,非常易懂,但是有个疑问,如何控制一个annotation里的某些属性可以填可以不填?

难道都是必填?
返回顶端  2楼
浏览发表者的主页 阅读会员资料 发送站内短信   最后更新:2006-11-30 10:07  
我来评分:  请先 登录
lighter
等级: 2钻会员
lighter的博客:读书.编程.思考

性别:
文章: 548
积分: 1135
来自: 广东
圈子: lucene爱好者
专栏: Lucene

       时间: 2006-11-30 10:29    评级:   11111 (0位会员评分)        

[quote="Norther"]非常不错啊,照着做了一遍就成功了,非常易懂,但是有个疑问,如何控制一个annotation里的某些属性可以填可以不填?
难道都是必填?
[/quote]

不是必填的,我举一个例子,可以更清楚一些,在把上面的Name.java改为

java 代码
  1. @Target(ElementType.METHOD)          
  2. @Retention(RetentionPolicy.RUNTIME)          
  3. @Documented         
  4. public @interface Name {          
  5.   String originate();          
  6.   String community();          
  7.   public enum CommunityNumber(LITTLE,ORDINARY,WELL)       
  8.   CommunityNumber  number()  default  CommunityNumber.WELL;       
  9. }   


这里的default是这一个关键字,指定默认值.(在上面文章上没有说明,谢谢Norther的提醒)
所以你可以在JavaEyer类上的方法指定用
@Name(originate="创始人:robbin",community="javaEye")或
@Name(originate="创始人:robbin",community="javaEye",number=Name.CommunityNumber.WELL)均可
这里的number的属性就不是必填的
另外,在enum CommunityNumber中,不一定非得要enum类型,用其他的合法类型也可,这里只是举一个例子而已

 
RTX 4060笔记本也能跑!保姆级教程:用Ollama在Windows上部署DeepSeek-R1-8B模型 本文详细介绍了如何在RTX 4060笔记本上通过Ollama本地部署DeepSeek-R1-8B模型,提供从环境配置到性能调优的全流程优化指南。针对笔记本用户的显存、散热等问题,给出了量化模型选择、启动参数优化及散热解决方案,帮助用户在消费级硬件上高效运行大语言模型。 阅读详情

相关推荐

eNSP网络构建—建立小型局域网

企业私有网络构建运维 实战案例——使用模拟器构建局域网络 案例分析 1.架构分析 (1)需求分析 本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之...

_ 4万+

实战篇:设计自己的Annotation

chenzijun20082008的专栏 781

STM32新手必看:AHT20温湿度传感器实战指南(附完整I2C代码)

本文详细介绍了如何使用STM32驱动AHT20温湿度传感器,包括硬件连接、I2C通信协议解析、驱动代码优化及实战调试技巧。通过对比AHT20与DHT11、SHT30等传感器的性能,突出AHT20的高性价比优势,并提供完整的I2C代码示例,帮助新手快速上手嵌入式传感器开发。

weixin_29163857的博客 293

关于注解Annotation的创建和使用

注解是什么? Annotion可用于类、构造方法、成员变量、方法、参数等声明中。该功能不影响程序的运行但是会对编译器警告等产生影响。 注释VS注解 注释是给以后的程序员或者自己看的,为了更好的表达程序的内容 注解是一种配置,信息和程序分离,从而通过修改注解信息来改变程序的流程 在JDK1.5以后,在系统中提供了三个Annotation: @Overrid

宋仲鸡的秘诀 523

PTA 学生信息的那些操作:添加记录(结构体)

这是河南工业大学自主命题的一道基础题,题目如下: 有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。 输入格式: 首先输入一个整数n(1<=n<=100),表示学生人数; 然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。 最后一行输入一个待添加的学生信息,包括学号

weixin_63617665的博客 3156

基于SolidWorks宏的草图点坐标自动化提取与Excel集成

本文详细介绍了如何利用SolidWorks宏编程实现草图点坐标的自动化提取并与Excel集成,显著提升机械设计效率。通过VBA代码解析与优化,解决了人工记录坐标耗时易错的问题,并扩展了多草图批量处理、数据可视化等高级功能,适用于数控加工、质量检测等场景。

weixin_29251131的博客 463

Java必备:基本Annotation

 Java必备:基本Annotation 一、Annotation简介  从Java1.5开始,Java增加了元数据(MetaData)的支持,也就是Annotation(注释);  Annotation能被用来为程序元素(类、方法、成员变量等)设置元数据;  Annotation不能影响程序代码的执行,无论添加、删除Annotation,代码

shenxiuwen1989的专栏 458

【数字孪生与仿真技术】10:半导体制造中的虚拟量测技术深度解析:从多尺度建模到工业级应用

摘要:半导体制造过程中,晶圆加工需实时监测300+关键参数,传统物理量测技术面临产能损耗、延迟检测等痛点。本文系统阐述虚拟量测(Virtual Metrology)技术的完整解决方案,通过多尺度混合建模实现物理机理与数据驱动的深度融合。内容涵盖等离子体刻蚀、薄膜沉积等关键工艺的物理模型构建,LSTM神经网络的数据校正算法,以及边缘-云协同的实时部署架构。某12英寸晶圆厂实践表明,虚拟量测技术可减少70%物理量测频次,异常漏检率从18%降至3%,机台利用率提升11%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2556

java 注解

Annotation在java的世界正铺天盖地展开,有空写这一篇简单的annotations的文章,算是关于Annotation入门的文章吧,希望能各位们能抛砖,共同学习......    不讲废话了,实践才是硬道理.    第一部分:了解一下java1.5起默认的三个annotation类型:    一个是@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。    一个是@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有

zx317931876的专栏 472

CLCD 中国生命周期基础数据库使用攻略

CLCD 是公共建筑碳排放计算的理想选择,其本地化数据可显著提高计算准确性。

hy行者勇哥的博客 2692

基于Python的农业市场价格抓取与供需分析:现代爬虫技术与实战应用

在正式开始爬虫开发之前,我们首先了解爬虫的基本概念和工作原理。爬虫(Web Scraping)是通过编程的方式,自动从互联网上获取信息的技术。它可以帮助我们提取HTML页面中的特定数据,通常用于收集并处理大量信息。发送HTTP请求:爬虫需要向目标网站发送请求,获取网站的HTML页面内容。解析HTML页面:通过HTML解析器对获取的页面内容进行解析,提取其中需要的数据。数据清洗与存储:将提取的数据进行清洗,去除多余的字符或无关内容,然后存储到合适的格式(如CSV文件、数据库等)中。数据分析与可视化。

2201_76125261的博客 1118

深入理解Java:注解(Annotation)--注解处理器

  如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。 注解处理器类库(java.lang.reflect.AnnotatedElement):   Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annota...

weixin_33895475的博客 893

【Coze搞钱实战】14. 抖音直播间自动回复机器人实战教程:三小时搭建智能客服,互动率提升150%(保姆级无代码指南)

摘要:抖音直播间高频问题重复回复、观众互动不及时是运营痛点。本文针对新手和进阶用户,提供无代码的自动回复机器人搭建方案:新手1小时完成基础配置(Coze+抖音对接),进阶用户通过促销倒计时、粉丝分层、热点借势三大策略提升互动率150%。方案基于某女装直播间实测数据(日UV 5W+),所有工具免费获取,步骤拆解到分钟级,附避坑指南与效果验证(某案例互动率从8%升至20%),读者可直接套用配置模板,无需代码基础即可落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2462

Annotation注解

注解Annotation 通过使用Annotation,可以在不改变原有逻辑的情况下,嵌入一些补充的信息。 Annotation只有成员变量,没有方法,成员变量以无参的方法来定义,方法名为成员变量名,方法的返回值为成员变量的类型。java.lang.annotation.Annotation接口:这个接口是所有Annotation类型的父接口。 根据是否包含成员变量可将 分为两类: 标记Anno...

littleAusna的博客 2439

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

java annotation 必须_Java Annotation 必须掌握的特性

什么是Annotation?Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息。Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互,但其他组件可以使用这些信息。Annotation信息可以被编译进class文件,也可以保留在Java 虚拟机中,从而在运行时可以获取。甚至对于Annotation本身也可以加Annotation。那些...

weixin_31129503的博客 86

廖雪峰Python教程[完整版]

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

java annotation详解_Java注解Annotation详解

从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。Annotation提供了一种为程序元素(包、类、构造器、方法...

weixin_42525343的博客 5857

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java annotation 属性_java annotation 获取属性

自定义Annotation1.声明一个annotation,类型是@interface//声明注解@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interfaceValueBind {enumfieIdType {STRING, INT};fieIdType type()default...

weixin_28339527的博客 803

注解Annotation

一、Annotation的简单介绍 1、什么是Annotation?        Annotation其实就是代码里的一种特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。 2、Annotation的好处:       通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。       JDK1.5新特性中的Annota

it_Shine的博客 1275

自定义Annotation以及通过反射技术获取程序元素上的Annotation注解信息

Anonotation的含义:中文翻译为"注解",实际上表示的是一种注释的语法,这种注释和代码的注释是不一样的,代码的注释如单行注释使用双斜杠"//",或多行注释使用"/*...*/"等是给程序员看的,其主要是为了增加代码的可读性,便于代码的后期维护。而Annotation主要是服务于编译器,属于一种配置信息。在本质上,Annotation提供了一种与程序元素关联任何信息或任何元数据的方式。Ann...

qq_43648299的博客 452

java中Annotation详解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。主要作用:Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。如代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 Java ...

程序员的博客 2142

java annotation 必须_Java Annotation-必须掌握的特性

什么是Annotation?Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息。Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互,但其他组件可以使用这些信息。Annotation信息可以被编译进class文件,也可以保留在Java 虚拟机中,从而在运行时可以获取。甚至对于Annotation本身也可以加Annotation。那些...

weixin_39956110的博客 95

Java Annotation Processing 概述

文章目录

O_o 3371

java annotation 必须_Java 注释 Annotation

从JDK 5开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注释)。Annotation提供了一种为程序元素设置元数据的方法,从某些方面来看,Annotation就想修饰符一样,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被存储在Annotation的”name = value”对中Annotation是一个接口,程序可以通过反射来获...

weixin_42561910的博客 274

java annotation list_Java中Annotation用法

AnnotationAnnotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。Annotation提供了一条为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符...

weixin_35292208的博客 397
上一篇: Java,annotation,标注
下一篇: Annotation(续)
javaokay
博客等级 码龄20年 6粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值