注解
- 格式:doc
- 大小:266.00 KB
- 文档页数:31
常用的注解A、总体说明类注解排版文件(SB):将多个小样文件按顺序组版。
版心说明(BX)注解:指定全书正文的版面格式,包括字体、字号、每行字数、每页行数等要求。
页码说明(YM)注解:给出全书页码排法。
书眉说明(MS)注解:给出全书书眉排法。
注文说明(ZS)注解:给出全书注脚的排法。
外挂字体名定义(KD)注解:定义外挂字体的别名,以后在小样文件中就可以用别名来指代该外挂字体。
标题定义(BD)注解:定义本书各级标题排法。
B、字符控制类注解1、汉字排版汉字字体(HT)注解:指定汉字使用的字号、字体。
简繁汉字转换(FJ)注解:实现简体、繁体汉字的互相转换。
1、外文排版外文字体(WT)注解:指定外文的字体、字号。
外体自动搭配(WT)注解:中英文混排时,根据当前汉字字体自动搭配外文字体。
文种(WZ)注解:指定此注解之后的外文文种。
日文(RW)注解:指定输出日文为新字形还是旧字形。
2、数字排版数字字体(ST)注解:指定数字的字体、字号。
数体自动搭配(ST)注解:指定数字字体与外文字体自动搭配。
数字(SZ)注解:指定版面竖排数字的排法。
4、排标点符号标点符号(BF)注解:指定采用全身制标点还是开明锚标点。
对开(DK)注解:指定采用对开符号。
全身(QS)注解:指定采用全身符号。
外文(WW)注解:排外文时,将相应的汉字标点符号用相应的外文标点替换掉。
5、排拼音拼音(PY)注解:给汉字加拼音。
注音(ZY)注解:给汉字加排老式注音字母。
6、字符的修饰粗细(CX)注解:指定将字符加粗或减细。
倾斜字体(QX)注解:将字体倾斜。
旋转字体(XZ)注解:将字符旋转。
空心字(KX)注解:排空心字。
立体字(LT)注解:排立体字。
阴阳字(YY)注解:排阴阳字。
长扁字(CB)注解:排长扁字。
勾边(GB)注解:排勾边字。
C、版面控制类1、字间距离调整空格(KG)注解:改变字符间的距离。
撑满(CM)注解:将作用范围内的字在指定宽度内撑满排。
古书注解注释词义举例
古书注解中注释词义的例子有很多,以下是其中一些:
1. 《论语·先进》:“加之以师旅,因之以饥馑。
”朱熹注:“谷不熟曰饥,菜不熟曰馑。
”这里,朱熹用“谷不熟曰饥,菜不熟曰馑”来解释“饥”、“馑”这两个词的意义。
2. 《楚辞·离骚》:“各兴心而嫉妒。
”王逸注:“害贤为嫉,害色为妒。
”王逸用“害贤为嫉,害色为妒”来解释“嫉妒”的含义。
3. 《左传·庄公十年》:“肉食者谋之,又何间焉?”杜预注:“肉食者,谓大夫以上。
”杜预用“大夫以上”来解释“肉食者”这个词的意义。
4. 《孟子·告子下》:“天将降大任于斯人也,必先苦其心志,劳其筋骨。
”杨伯峻注:“任,责任,担子。
”杨伯峻用“责任,担子”来解释“任”这个词的意义。
5. 《荀子·劝学》:“劝学之本,在於自劝。
”杨倞注:“劝,劝勉。
自劝,自己勉励自己。
”杨倞用“自己勉励自己”来解释“自劝”这个词的意义。
这些例子表明,古书注解中常常会用一些贴近语境、易于理解的语言来解释和阐述词义,以达到帮助读者理解的目的。
古文书注解与注释和注析
的区别
1、注解与注释的区别:
注解是概述性的注释,把古文书归纳为一个整体,努力把古文书写出它的客观事实,关注古文书整体的积极意义,从而使古文书变得更加具有实践意义。
注释则是更加具体的,从一定的角度来解释古文书,把古文书中的每一个事项都分析重点以及各种可能的解释,以此来揭示古文书的独特性,让古文书具有更多的学术价值。
2、注解与注析之间的区别:
注解是概括性的,把古文书的客观事实做出解释或摘要,努力体现出古文书的独特性,以此来增强古文书的实践意义,使古文书更容易理解并有所启发。
注析把古文书中的每一个事件都分析重点,对各种可能的解释加以重点研究,综合考察古文书的背景,以此来揭示古文书的内涵,增加古文书的学术价值。
注解的八种方式
1. 释义注解
最常见的注解方式,即对生僻或不常见的词汇进行解释说明,并塑造该词在文章中的精准含义。
这种注解方式使用频率高于其他注解方式,让读者能够理解文本的全部含义。
2. 例证注解
为更好的阐释文本中的概念或思想,可以通过举例子的方式来加深阅读理解,并将其与读者的现实生活联系起来,让读者更好的理解概念的意义和用法。
3. 比喻注解
用生动的比喻来诠释文本中的复杂概念,让读者更加形象地理解文本中的表达。
这种注解方式特别适合形式化或难以理解的概念。
4. 重复注解
在文本中多次出现相同的概念或短语时,为了强调其重要性或加强语气,可以通过重复注解的方式来加强读者的印象与理解。
5. 标注注解
在一般情况下,标点符号只是起到区分词义和语义的功能,然而在某些情况下,如在特定的文学形式中,标点符号被用来表示一种声音或情感上的变化,这时就需要使用标注注解,让读者更好理解文本中标点符号的意义。
6. 引用注解
通过引用其他相关的文献和专业术语来解释复杂的概念或表述,从而使读者针对该文本更加有背景认知和科学理解。
7. 图表注解
文本的具体内容可能需要以图表的形式来展示,这时候就需要在图表中加入解释,帮助读者更好的理解数据和图标中的含义。
8. 反问注解
有时候,通过反问的方式来引领读者思考或暗示自己的立场,这种注解方式对于揭示作者观点和描述实质性内容很有效。
注解是什么?一、注解是什么注解(Annotation)是JDK1.5引入的注释机制,它本身没有任何意义,仅仅是对代码的注释,被修饰的代码不会被影响执行。
但是它和普通的代码注释又不同,可以保留在各个时间段(源码、字节码、运行时),在各个时间段通过不同的技术(APT、字节码增强、反射),做不同的事情。
@Override:检查该方法是否是重写方法,仅保留在源码阶段,编译时判断如果父类和接口中没有该方法,会报错。
二、自定义注解咱们依然拿@Override注解举例,下面是它的源码@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}从上面代码我们看到了三个比较新的东西,@Target、@Retention、@interface,咱们一个个来说2.1 关键字:@interface类使用class关键字修饰、接口使用interface关键字修饰、注解使用@interface关键字修饰。
2.2 元注解:@Target注解是用来注释代码的,而元注解是用来注释注解的,给自定义的注解增加一些限定范围。
@Target:元注解之一,限制注解的使用范围,比如作用在属性、方法还是类上。
接收的是一个数组,可以指定多个范围。
可接收的范围:public enum ElementType {// 类、接口(包括注释类型)或枚举TYPE,// 字段(包括枚举常量)FIELD,// 方法METHOD,// 参数PARAMETER,// 构造方法CONSTRUCTOR,// 局部变量LOCAL_VARIABLE,// 注释类型ANNOTATION_TYPE,// 包PACKAGE}// 单个范围,@Override仅可用在方法上@Target(ElementType.METHOD)public @interface Override {}// 多个范围,@Test可使用在构造方法和方法上@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})public @interface Test {}2.3 元注解:@Retention@Retention:元注解之一,保留级别,设置该注解代码可以保留到什么阶段。
java transaction注解原理Java中的事务是一种重要的机制,用来确保数据库操作的一致性和可靠性。
为了简化事务的管理,Java提供了一种注解方式来实现事务的控制。
本文将重点讨论Java中事务注解的原理,包括事务注解的定义、使用方式、底层实现原理以及常见的事务注解。
一、事务注解的定义事务注解是一种Java语言的扩展功能,通过在方法或者类上添加注解的方式,来实现事务的管理。
事务注解可以对一个方法执行的数据库操作进行事务管理,保证这些操作要么全部成功,要么全部回滚。
二、事务注解的使用方式在Java中,可以使用多种方式来定义事务注解,最常用的方式是使用Spring框架提供的@Transactional注解。
下面是一个使用@Transactional注解的示例:java@Transactionalpublic void updateData(User user) {userRepository.save(user);}在上述示例中,@Transactional注解应用于updateData方法,表示该方法要进行事务管理。
三、事务注解的底层实现原理事务注解的底层实现原理与所使用的持久化框架有关,最常见的底层实现原理是使用数据库连接或者数据库事务管理器来控制事务的提交和回滚。
下面是一个简单的事务注解实现的伪代码:javapublic void updateData(User user) {Transaction transaction = beginTransaction();try {userRepository.save(user);commitTransaction(transaction);} catch (Exception e) {rollbackTransaction(transaction);}}在上述伪代码中,使用beginTransaction()方法开始一个事务,然后在try块中执行数据库操作,最后通过commitTransaction()方法提交事务。
古注的类型古书的注解由于作注的角度不同,侧重点不同,因而有不同的体式和名称,大致可以分为传注体、章句体、义疏体、集解体、补注体、音义体等。
1.传注体所谓“传注体”,是一种以解释词义为主的古注类型,多用于解释古书正文。
属于传注体的注释,名称繁多,最常见的有诂、训、传、注、笺等名称。
诂、训,笼统说来没有什么区别,凡侧重于字词、名物解释的,一般称作“诂” (通作“故”)、“训”。
《汉书·艺文志》著录鲁、齐、韩三家诗各有“故”数十卷。
清马其昶有《老子故》,徐孚吉有《尔雅故》。
汉高诱作《淮南子注》,在原书每篇题目下加一“训”字,清王?运注《论语》,书题《论语训》,都是这样的例子。
古人对诂、训之别做过辨析,唐孔颖达说:“诂者,古也,古今异言,通之使人知也。
训者,道也,道物之貌以告人也。
”(《诗·周南·关雎》疏)。
清马瑞辰认为:“单词则为诂,重言则为训。
诂第就其字之义旨而证明之,训则兼其言之比兴而训道之。
此诂与训之辨也。
”综合两家之言,则诂是以今言释古言,侧重于解释单词的意义;训是对古代词语作形象性的描绘与说明,侧重于解释由两个相同的单音节词构成的词语(重言),并兼言其比兴意义。
在注书过程中,古人对训、诂往往不作严格区分,还常连用作书名,如汉张衡有《周官训诂》(已佚),南宋钱文子有《诗训诂》等等。
传,《说文》:“传,遽也。
”段玉裁注:“传者,今之驿马。
”传的本义是古代传递公文信件的驿车和驿马,引申为“传通、传述”的意思。
秦汉时,把儒家的“六经”(易、书、诗、礼、乐、春秋)称为“经”,把解释经的叫做“传”。
如“毛传”就是对《诗经》的注释。
孔安国对《尚书》的注释叫做“孔传”。
《左传》、《公羊传》、《谷梁传》也被认为是对《春秋经》的解说,所以都称“传”。
笺,《说文》:“笺,表识书也。
”东汉时郑玄在《毛传》的基础上,对《诗经》又作了进一步的解释,他的注解称为“笺”。
郑玄“笺”的意思本来是说对《毛传》的阐发和补充,但后来所谓的“笺注”、“笺证”,却只是“注解”的意思,不一定限于对别人的注的阐发和补充。
关于@Component注解的含义说明⽬录⼀、注解分类⼆、@Component 注解含义三、基于@Component扩展的注解四、component的扫描组件五、⽅法初始化和销毁1. @PostConstruct注解2. @PreDestroy注解3. ⽰例⼀、注解分类1、@controller:controller控制器层(注⼊服务)2、@service:service服务层(注⼊dao)3、@repository:dao持久层(实现dao访问)4、@component:标注⼀个类为Spring容器的Bean,(把普通pojo实例化到spring容器中,相当于配置⽂件中的<bean id="" class=""/>)⼆、@Component 注解含义@Component:标注Spring管理的Bean,使⽤@Component注解在⼀个类上,表⽰将此类标记为Spring容器中的⼀个Bean。
三、基于@Component扩展的注解@Repository:@Repository本⾝是基于@Component注解的扩展,被@Repository注解的POJO类表⽰DAO层实现,从⽽见到该注解就想到DAO层实现,使⽤⽅式和@Component相同;@Service:@Service本⾝是基于@Component注解的扩展,被@Service注解的POJO类表⽰Service层实现,从⽽见到该注解就想到Service层实现,使⽤⽅式和@Component相同;@Controller:@Controller本⾝是基于@Component注解的扩展,被@Controller注解的类表⽰Web层实现,从⽽见到该注解就想到Web层实现,使⽤⽅式和@Component相同;Tips:使⽤@Component,@Service,@Controller,@Repository注解的类,表⽰把这些类纳⼊到spring容器中进⾏管理,同时也是表明把该类标记为Spring容器中的⼀个Bean。
Java 快速获取注解信息的方法在 Java 开发中,注解是非常重要的一部分,用于给代码提供附加信息,如参数说明、返回值说明、变量说明等等。
在某些场景下,需要快速获取注解信息,本文介绍了几种常用的方法。
下面是本店铺为大家精心编写的5篇《Java 快速获取注解信息的方法》,供大家借鉴与参考,希望对大家有所帮助。
《Java 快速获取注解信息的方法》篇1在 Java 中,注解是一种用于提供代码附加信息的机制,它们是代码中的特殊注释,可以使用特定语法来定义。
注解可以用于描述类、方法、参数、变量等等。
在某些场景下,需要快速获取注解信息,比如在调试代码时需要查看参数注解,或者在开发 API 文档时需要自动生成参数注释。
本文介绍了几种常用的方法来快速获取注解信息。
1. 使用反射反射是 Java 中获取注解信息的一种常用方法。
通过反射,可以获取类的构造器、字段、方法等信息,并且可以获取注解信息。
使用反射获取注解信息的步骤如下:```// 获取注解类型Class<?>注解类 = Class.forName("注解类名");// 获取注解对象注解注解 = 注解类.getAnnotation(注解类);```其中,注解类名是需要获取注解信息的注解类的全限定名,注解对象是获取的注解对象。
如果注解类名不是全限定名,则会抛出ClassNotFoundException 异常。
2. 使用注解处理器注解处理器是 Java 中处理注解的一种机制。
通过注解处理器,可以在编译时或运行时处理注解信息。
使用注解处理器获取注解信息的步骤如下:```// 定义注解处理器类public class 注解处理器类 implements 注解处理器 {@Overridepublic boolean process(Set<Class<?>> classes,Set<MethodHandler> methods) {// 处理注解信息return true;}}// 使用注解处理器获取注解信息注解处理器处理器 = new 注解处理器类 ();处理器.process();```其中,注解处理器类需要实现注解处理器接口,并在 process 方法中处理注解信息。
mybatis的常用注解MyBatis是一款优秀的ORM框架,用于简化Java应用程序与关系数据库之间的交互。
MyBatis提供了大量的注解,用于更容易和更快捷地定义和控制SQL查询和其他数据库操作。
本文将会简单介绍一些常用的MyBatis注解及其用法。
1. @Select@Select注解用于在接口方法中定义查询SQL语句,例如:@Select("SELECT * FROM user WHERE id = #{id}")User getUserById(int id);2. @Insert3. @Update5. @Result@Result注解用于指定查询结果的映射关系,例如:@Results({@Result(property = "id", column = "id"),@Result(property = "name", column = "name"),@Result(property = "age", column = "age")})@Select("SELECT id, name, age FROM user WHERE id=#{id}")User getUserById(int id);7. @Param@Param注解用于指定命名参数的名称,使用在XML中的SQL语句中,例如:8. @Options@Options注解用于指定SQL语句的一些选项,例如:@InsertProvider(type = UserSqlProvider.class, method = "addUserSql")void addUser(User user);以上就是MyBatis常用的注解及其用法。
MyBatis的注解功能非常强大,能够大大简化我们的工作,提高代码效率。
《弟子规》全文zǒng xù总叙dìzǐguīshèng rén xùn弟子规,圣人训。
shǒu xiào tìcìjǐn xìn首孝悌,次谨信。
fànài zhòngér qīn rén泛爱众,而亲仁。
yǒu yúlìzéxuéwén有余力,则学文。
【释义】:弟子就是学生,规是规范。
《弟子规》是依据至圣先师孔子的教诲而编成的生活规范,它规定了学生主修的六门课和辅修的一门课。
首先在日常生活中,要做到孝顺父母,友爱兄弟姐妹。
其次在一切日常生活中行为要小心谨慎,言语要讲信用。
和大众相处到平等博爱,并且亲近有仁德的人,向他学习,这些都是很重要非做不可的事。
如果做了之后,还有多余的时间精力,就应该好好的学习六艺等其它有益的学问。
rùzéxiào入则孝fùmǔhūyìng wùhuǎn父母呼,应勿缓。
fùmǔmìng xíng wùlǎn父母命,行勿懒。
fùmǔjiào xūjìng tīng父母教,须敬听。
fùmǔzéxūshùn chéng父母责,须顺承。
【释义】:《弟子规》“入则孝”是学生主修的第一门课。
入是在家。
孝是善事父母,就是在家要善事父母。
善事,一个是心,一个是侍。
心即是心里面念念不忘父母对我们的养育之恩,侍即是念念都要照顾到父母。
我们能以这样的心去做,就是善事父母,这是做人的根本。
百善孝当先。
父母亲叫你的时候,要立刻答应,不能迟缓;父母亲让你做事的时候,要马上去做,不能拖延偷懒。
对父母的教诲,要恭敬地聆听;对父母的责备,要顺从地接受。
dōng zéwēn xiàzéqìng冬则温,夏则凊。
注解的原理
一、注解的原理
注解(Annotation),也叫元数据。
一种以特定格式注释源代码的方式,是一种代码描述技术,可以使程序更加精确,在现代面向对象的编程语言中,使用注解可以实现更加丰富的数据描述,便于维护。
1、基于反射
注解机制是基于反射实现的,程序可以通过反射获取到类、属性、方法等信息,从而知道某个属性有什么注解,或者某个方法有什么注解等,还可以获取到注解的属性值,通过这些信息编写出系统的业务逻辑。
2、基于字节码
字节码的概念是把java类文件编译成一种特定的平台无关的字节码文件,这些字节码文件可以在任何兼容java虚拟机的机器上运行,并且java类的字节码文件是可以被查看和修改的。
注解机制基于字节码的原理,可以通过解析字节码文件,从而获取到类、属性、方法等信息,再加上反射的实现,获取到注解的属性值,通过这些信息,可以实现对源代码的更加丰富的描述。
3、运行时注解
运行时注解是在程序运行时发挥作用,主要是基于反射机制,在程序运行过程中,获取类、属性、方法等信息,判断是否有某个注解,并获取注解上的属性值,根据这些信息进行相应的处理逻
辑,从而实现程序的增强。
总的来说,注解是一种对源代码的描述,通过反射机制和字节码机制,可以获取到注解的信息,并实现程序的增强。
请简述mybatis的常用注解及其作用
MyBatis是一种支持定制化SQL、存储过程调用以及高级映射的ORM框架,常用的注解有如下几种:
1. @Mapper: 用于标记接口或者类是MyBatis映射器,可以将Mapper接口直接扫描到Spring容器中,方便调用。
2. @Select: 用于标记查询语句,将SQL语句映射到Java方法上。
3. @Insert: 用于标记插入语句,将SQL语句映射到Java方法上。
4. @Update: 用于标记更新语句,将SQL语句映射到Java方法上。
5. @Delete: 用于标记删除语句,将SQL语句映射到Java方法上。
6. @Param: 用于给参数命名,一般在SQL语句中使用#{参数名}的方式引用命名参数。
7. @Results: 用于定义查询结果集的映射关系,将查询结果集的列名映射到Java对象的属性上。
8. @Result: 用于定义单个属性的映射关系,将查询结果集的列名映射到Java对象的属性上。
以上注解是MyBatis中较为常用的注解,通过使用这些注解可以简化SQL语句的编写以及结果集的映射,提高开发效率。
- 1 -。
java自定义注解动态解析获取方法参数值Java中的注解(Annotation)是一种用来在代码中添加元数据(metadata)信息的一种机制。
通过注解,我们可以在代码中加入一些额外的信息,以便在运行时进行解析和处理。
在Java中,我们可以使用自定义注解来定义我们自己的元数据信息。
自定义注解可以应用在类、方法、字段等各种地方,并且可以带有一些参数来进行进一步的配置。
在本文中,我将介绍如何编写一个自定义注解,并且使用反射机制动态解析获取方法参数值。
一、自定义注解首先,我们需要定义一个自定义注解。
在Java中,注解是通过`@interface` 关键字定义的。
我们可以在注解中定义一些成员变量,成员变量可以使用不同的数据类型,并且可以设置默认值。
```javaimport ng.annotation.ElementType;import ng.annotation.Retention;import ng.annotation.RetentionPolicy;import ng.annotation.Target;@Retention(RetentionPolicy.RUNTIME) // 设置注解的生命周期为运行时@Target(ElementType.METHOD) // 设置注解的目标为方法public @interface CustomAnnotation {String value() default ""; // 定义一个成员变量,默认为空字符串}```在上述代码中,我们定义了一个自定义注解 `CustomAnnotation`。
该注解有一个成员变量 `value`,默认为空字符串。
我们还使用了`@Retention` 和 `@Target` 注解来设置注解的生命周期和目标。
二、使用自定义注解接下来,我们将使用自定义注解 `CustomAnnotation` 来标注一个方法,并且在运行时使用反射机制获取方法参数的值。
Java注解(Annotation)(1) Annotation(注释)是JDK5.0及以后版本引入的。
它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。
注释是以‘@注释名’在代码中存在的,根据注释参数的个数,我们可以将注释分为:标记注释、单值注释、完整注释三类。
它们都不会直接影响到程序的语义,只是作为注释(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。
另外,你可以在编译时选择代码里的注释是否只存在于源代码级,或者它也能在class文件中出现。
元数据的作用如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:编写文档:通过代码里标识的元数据生成文档。
代码分析:通过代码里标识的元数据对代码进行分析。
编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。
基本内置注释@OverrideJava代码1. package com.iwtxokhtd.annotation;2. /**3. * 测试Override注解4. * @author Administrator5. *6. */7. public class OverrideDemoTest {8.9. //@Override10. public String tostring(){11. return "测试注释";12. }13. }package com.iwtxokhtd.annotation;/*** 测试Override注解* @author Administrator*public class OverrideDemoTest {//@Overridepublic String tostring(){return "测试注释";}}@Deprecated的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,使用@Deprecated的示例代码示例如下:Java代码1. package com.iwtxokhtd.annotation;2. /**3. * 测试Deprecated注解4. * @author Administrator5. *6. */7. public class DeprecatedDemoTest {8. public static void main(String[] args) {9. //使用DeprecatedClass里声明被过时的方法10. DeprecatedClass.DeprecatedMethod();11. }12. }13. class DeprecatedClass{14. @Deprecated15. public static void DeprecatedMethod() {16. }17. }package com.iwtxokhtd.annotation;/*** 测试Deprecated注解* @author Administrator*/public class DeprecatedDemoTest {public static void main(String[] args) {//使用DeprecatedClass里声明被过时的方法DeprecatedClass.DeprecatedMethod();}}class DeprecatedClass{@Deprecatedpublic static void DeprecatedMethod() {}}@SuppressWarnings,其参数有:deprecation,使用了过时的类或方法时的警告unchecked,执行了未检查的转换时的警告fallthrough,当Switch 程序块直接通往下一种情况而没有Break 时的警告path,在类路径、源文件路径等中有不存在的路径时的警告serial,当在可序列化的类上缺少serialVersionUID 定义时的警告finally ,任何finally 子句不能正常完成时的警告all,关于以上所有情况的警告Java代码1. package com.iwtxokhtd.annotation;2.3. import java.util.ArrayList;4. import java.util.List;5.6. public class SuppressWarningsDemoTest {7.8. public static List list=new ArrayList();9. @SuppressWarnings("unchecked")10. public void add(String data){11. list.add(data);12. }13. }package com.iwtxokhtd.annotation;import java.util.ArrayList;import java.util.List;public class SuppressWarningsDemoTest {public static List list=new ArrayList();@SuppressWarnings("unchecked")public void add(String data){list.add(data);}}(2)自定义注释它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface,如下例:Java代码1. public @interface NewAnnotation {2. }public @interface NewAnnotation {}使用自定义的注释类型Java代码1. public class AnnotationTest {2. @NewAnnotation3. public static void main(String[] args) {4. }5. }public class AnnotationTest {@NewAnnotationpublic static void main(String[] args) {}}为自定义注释添加变量Java代码1. public @interface NewAnnotation {2. String value();3. }public @interface NewAnnotation {String value();}Java代码1. public class AnnotationTest {2. @NewAnnotation("main method")3. public static void main(String[] args) {4. saying();5. }6. @NewAnnotation(value = "say method")7. public static void saying() {8. }9. }public class AnnotationTest {@NewAnnotation("main method")public static void main(String[] args) {saying();}@NewAnnotation(value = "say method")public static void saying() {}}定义一个枚举类型,然后将参数设置为该枚举类型,并赋予默认值Java代码1. public @interface Greeting {2. public enum FontColor{3. BLUE,RED,GREEN4. };5. String name();6. FontColor fontColor() default FontColor.RED;}7. }public @interface Greeting {public enum FontColor{BLUE,RED,GREEN};String name();FontColor fontColor() default FontColor.RED;}}这里有两种选择,其实变数也就是在赋予默认值的参数上,我们可以选择使用该默认值,也可以重新设置一个值来替换默认值Java代码1. @NewAnnonation("main method")2. public static void main(String[] args) {3. saying();4. sayHelloWithDefaultFontColor();5. sayHelloWithRedFontColor();6.7. }8. @NewAnnonation("say method")9. public static void saying(){10.11. }12. //此时的fontColor为默认的RED13. @Greeting(name="defaultfontcolor")14. public static void sayHelloWithDefaultFontColor() {15.16. }17. //现在将fontColor改为BLUE18. @Greeting(name="notdefault",fontColor=Greeting.FontColor.BLUE)19. public static void sayHelloWithRedFontColor() {20.21. }@NewAnnonation("main method")public static void main(String[] args) {saying();sayHelloWithDefaultFontColor();sayHelloWithRedFontColor();}@NewAnnonation("say method")public static void saying(){}//此时的fontColor为默认的RED@Greeting(name="defaultfontcolor")public static void sayHelloWithDefaultFontColor() {}//现在将fontColor改为BLUE@Greeting(name="notdefault",fontColor=Greeting.FontColor.BLUE)public static void sayHelloWithRedFontColor() {}(3)注释的高级应用限制注释的使用范围用@Target指定ElementType属性Java代码1. package ng.annotation;2. public enum ElementType {3. TYPE,4. // 用于类,接口,枚举但不能是注释5. FIELD,6. // 字段上,包括枚举值7. METHOD,8. // 方法,不包括构造方法9. PARAMETER,10. // 方法的参数11. CONSTRUCTOR,12. //构造方法13. LOCAL_V ARIABLE,14. // 本地变量或catch语句15. ANNOTATION_TYPE,16. // 注释类型(无数据)17. PACKAGE18. // Java包19. }package ng.annotation;public enum ElementType {TYPE,// 用于类,接口,枚举但不能是注释FIELD,// 字段上,包括枚举值METHOD,// 方法,不包括构造方法PARAMETER,// 方法的参数CONSTRUCTOR,//构造方法LOCAL_VARIABLE,// 本地变量或catch语句ANNOTA TION_TYPE,// 注释类型(无数据)PACKAGE// Java包}注解保持性策略Java代码1. //限制注解使用范围2. @Target({ElementType.METHOD,ElementType.CONSTRUCTOR})3. public @interface Greeting {4.5. //使用枚举类型6. public enum FontColor{7. BLUE,RED,GREEN8. };9. String name();10. FontColor fontColor() default FontColor.RED;11. }//限制注解使用范围@Target({ElementType.METHOD,ElementType.CONSTRUCTOR}) public @interface Greeting {//使用枚举类型public enum FontColor{BLUE,RED,GREEN};String name();FontColor fontColor() default FontColor.RED;}在Java编译器编译时,它会识别在源代码里添加的注释是否还会保留,这就是RetentionPolicy。