注解(三)
来源:互联网 发布:剑三五毒萝莉捏脸数据 编辑:程序博客网 时间:2024/06/05 05:26
1.什么是注解以及它的作用?
注解就是写在代码里的一种配置文件;
小插曲:JDK1.5的新特性:枚举,注解,增强for循环......
2.JDK提供的常用注解:
(1)@Override:标志此方法是覆写父类的方法,如果没有覆写则报错
小插曲:在覆写Object的equals方法的时候,如果没有正确的覆写,那么在HashSet方法调用equals的方法的时候,继续调用父类的equals方法,而把我们自己的方法当做equals的重载形式;
(2)@Deprecated:提醒过时
(3)@SuppressWarnings:压缩警告
例:@SuppressWarnings("deprecation")提醒编译器或开发工具不要出现警告“方法或者类过时了 ”的信息
3.注解可以加的地方:
包,类,字段,方法,方法的参数以及局部变量上
4.自定义注解:
(1)定义注解的关键字:@interface
(2)元注解@Retention:指定定义的注解的生命周期
其三种取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS(默认)、RetetionPolicy.RUNTIME; 分别对应:java源文件-->class文件-->内存中的字节码。
(3)元注解@Target:指定注解的使用范围:Target的默认值为任何元素
(4)注解的属性:
定义格式:返回值类型 名称();
特殊属性名称:Value:如果只有value的值需要设置时,那么可以省略value和=;
默认值:使用default定义;
可以定义的类型:
八大基本数据类型、枚举、String、Class、注解、以上数据类型的一位数组
数组:如果在使用注解时数组只需要传入一个值,那么可以省略大括号;
小插曲:(1)class文件里的东西不是字节码,只有把class里的东西转换加载到内存,那么内存里的东西才叫字节码
(2)if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){里的AnnotationTest.class.指的是内存中的字节码
(3)@Override、@SuppressWarnings和@Deprecated的生命周期分别是:源文件,源文件、运行时(通过查JDK文档可以得知)
(4)(interface ) Type:class,interface,enum,@interface...
(5)其它元注解:
@Documented: 用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档.
@Inherited: 被它修饰的 Annotation 将具有继承性.如果某个类使用了被
@Inherited 修饰的 Annotation, 则其子类将自动具有该注解
5.一个完整案例:
//定义注解:@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD,ElementType.TYPE})//ElementType.TYPE表示可以加在type类型上(class,interface......)public @interface ItcastAnnotation {String color() default "blue";String value();int[] arrayAttr() default {3,4,4};EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");}//使用注解: @ItcastAnnotation(annotationAttr=@MetaAnnotation("mr"),color="black",value="xxx",arrayAttr=3)public class AnnotationTest {...} //反射注解:if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){//判断字节码上是否有该注解 ItcastAnnotation annotation =(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);//反射出注解//取得注解的信息System.out.println(annotation.color());System.out.println(annotation.value());System.out.println(annotation.arrayAttr().length);System.out.println(annotation.lamp().nextLamp().name());System.out.println(annotation.annotationAttr().value());}
- hibernate注解(三)
- 注解(三)
- 注解学习三:注解(Annotation)--注解处理器
- Java注解(三) 自定义注解与提取注解
- Java注解(三) 自定义注解与提取注解
- java笔记(三)--注解
- JPA实体注解(三)
- Hibernate,JPA注解(三)
- 深入理解Java:注解(Annotation)(三)--注解处理器
- Java注解解析(三)——解析自定义注解
- 深入理解Java(三):注解(Annotation)--注解处理器
- SpringMVC学习(三)-HiddenHttpMethodFilter过滤器&RequestParam注解&CookieValue注解
- java注解(三)spring3注解使用……
- spring注解(三)使用注解代替xml配置
- Spring 注解详细介绍(三)
- spring基础学习三(注解使用)
- webservice之CXF注解实现(三)
- spring之注解(三)Component
- 做为程序员对sql进行的性能优化
- startActivityForResult 和 onActivityResult 没反应不起作用
- Android中LayoutInflater的使用
- Ubuntu 下用hostapd创建AP热点
- Problem 1537 - A - Stones I
- 注解(三)
- VC++截取输入法输入信息钩子dll实现
- poj 2796 利用并查集维护区间和
- mysql利用hibernate连接数据库出错
- 004_017 Python 查找2个字典的交集和并集 指的是键
- Ubuntu 12.04 中安装和配置 Java JDK
- Ubuntu操作系统学习笔记之-----文件基本操作管理
- autoconf 和 automake 生成 Makefile 文件
- Chrome插件开发之制作豆瓣电台歌词