注解Annotation JDK1.5出现的新特性。在java.lang.annotation包中。 对于过时的语句,java会提示过时了,通过@SuppressWarnings("Deprecation")在DOS中取消提示,但Eclipse无法取消。
这就是注解,相当于标记。编译器、开发工具、javac通过反射获得注解里的内容,进而明确应该做什么、不应该做什么。注解可以加在包、类、属性、方法、参数及局部变量之上。
一个注解就是一个类。@SuppressWarnings,取消警告。@Deprecated,已过时,老版可以用,新版无法用。
HashSet集合中,对象必须覆盖Object类的equals()方法,否则会继续使用Object类的equals()方法进行比较,错误的比较方法。覆盖equals()方法,参数必须一致,为了防止错误写入本类的对象,加入@Override,必须正确覆盖父类方法,不是创建新方法。 注解的应用 在源程序中,调用一个类,这个类会用到注解,需要先准备好注解类,类在调用注解类的对象。注解类的写法类似接口,@interface。先写好注解类A,将注解放在类B中,类C在调用类B时通过反射获得注解类A的内容,进而明确该做什么、不该做什么。可以加上多个注解,加上的实际是注解类的对象:@interfaceA。 main()方法必须放在一个类下,但与这个类不一定有所属关系。 在注解类A上加注解B,这个注解B只为这个注解类A服务,B称为“元注解”。类似的还有元信息、元数据。元注解有2个:Rentention和Target。对注解类的注解,可以理解为注解类的属性。 (1) Rentention注解类 注解的生命周期:Java源文件—》class文件—》内存中的字节码。编译或者运行时,都有可能会取消注解。Rentention的3种取值意味让注解保留到哪个阶段,RententionPolicy.SOURCE、RententionPolicy.CLASS(默认值)、RententionPolicy.RUNTIME。
@Override、@SuppressWarnings是默认保留到SOURCE阶段;
@Deprecated是保留到RUNTIME阶段。
Rentention相当于注解类的一个属性,因为Rentention的值不同,注解类保留到的阶段不同。注解类内部Rentention的值使用value表示,例如,@Deprecated中,value=Runtime。 Rentention的值是枚举RententionPolicy的值,只有3个:SOURCE、CLASS、RUNTIME。 (2)Target注解类 性质和Rentention一样,都是注解类的属性,表示注解类应该在什么位置,对那一块的数据有效。例如,@Target(ElementType.METHOD)
Target内部的值使用枚举ElementType表示,表示的主要位置有:注解、构造方法、属性、局部变量、函数、包、参数和类(默认值)。多个位置使用数组,例如,@Target({ElementType.METHOD,ElementType.TYPE})。类、接口、枚举、注解这一类事物用TYPE表示,Class的父类,JDK1.5的新特性。注解的基本属性属性,给注解提供更加详细的信息。注解相当于接口,属性相当于方法。例如,@ItcastAnnotation(color="red"),给属性赋值,取值时类似调用方法,例如,System.out.println(annotation.color());。所有的属性必须全部出现,除非有缺省值。如果只有value属性,没有其他属性,可以不写=,只针对value,例如,@SuppressWarnings("Deprecation")。或者有其他属性而且有缺省值,
例如,String color() default "blue";,此时value单独出现,不用=。获得注解的属性的值,例如if(AnnotationDemo.class.isAnnotationPresent(ItmAnnotation.class)){ ItmAnnotation annotation = (ItmAnnotation)AnnotationDemo.class.getAnnotation(ItmAnnotation.class); System.out.println(annotation.color()); }}利用反射获得注解的对象,在让该对象调用属性对应的方法。注意类型转换。Rentention和Target也是属性,都是value对应的值,值的类型分别是RententionPolicy和ElementType,例如,@Retention(value=RetentionPolicy.RUNTIME)。注解的高级属性给注解增加高级属性,数组、枚举、注解。
【1】数组类型的属性例如,int[] arr() default {3,7,5};,MyAnnotation(arr={3,7,6})。如果数组只有1个元素,可以不加{}。
@Target({ElementType.METHOD,ElementType.TYPE})也是数组类型的属性。
枚举类型的属性
//注解类内部的内容EnumerationDemo.TrafficLamp lamp() default EnumerationDemo.TrafficLamp.RED;//调用注解的类上@ItcastAnnotation(lamp=EnumerationDemo.TrafficLamp.YELLOW)//对注解进行操作System.out.println(annotation.lamp().nextLamp().name());
注解类型的属性
将一个注解类作为属性加入到另一个注解类中。MetaAnnotation annotationAtt() default @MetaAnnotation("Jobs")@ItcastAnnotation(annotationAtt=@MetaAnnotation("Kim"))annotation.annotationAtt().value()注解的返回值可以是8个基本类型、String、Class、枚举以及前面类型的数组,内部还有属性。需要详细学习注解,可以通过java语言规范,即languagespecification。
还有一个 不错的例子:
http://www.iteye.com/topic/400085
分享到:
相关推荐
java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解...
Java Annotation注解技术
Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解
本文档简述了有关javabean中id的注解解释,注解本来就很繁琐,但是学好的话用起来还是比较方便的
java 自定义注解验证 可自己添加所需要的注解,本案例中只写了三个自定义注解类 本案例只花了半天时间,如有不好之处请多提提意见。谢谢!
Java 注解技术详解
token工具,集成了token校验和注解方式token放行策略,解压后直接将java文件放到项目中,引入一下maven就可以用了,亲测可用,如果有问题欢迎留言评论或者私信,可以帮忙解决问题
java动态代理对象实现日志输出,另外再配上annotation实现注解输出。
使用注解控制java事务, 类似spring处理,代码干净简洁
java 通过反射获取类上注解,方法上注解,注解里的值及方法参数,项目为maven项目。导入时记得选择maven项目
包括Java自定义注解以及包括自定义注解的应用实例。以及注解相关知识的注解
本注解,通过代码对java,struts,spring,hibernate内的各种情况进行解释,是不可多得的资料
java spring 框架及注解 总结,本人在项目开发中总结的,希望对大家有所帮助
Java8新特性之类型注解_动力节点Java学院整理,动力节点口口相传的Java黄埔军校
如果你想知道java annotation是什么?你可以看看
java-excel导入导出注解版内用教程说明
Java注解实现
Java8新特性之重复注解_动力节点Java学院整理,动力节点口口相传的Java黄埔军校
java提供的注解技术,这里很基础的提供了注解的简单实现样例,SpringMVC采用了很多的注解,基本简单案例展现想了解下注解的同学,对类的方法进行顺序注解后,可以按照注解自动按照顺序调用方法。
介绍spring注解的原理和注解应用,与spring springMvc mybatis与spring struts2 mybatis的差别等等