已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安卓越科技(北京)有限公司 1 第十六章 注 解 安卓越科技(北京)有限公司 2 回顾与作业点评 反射和API 使用反射获取信息 使用反射创建对象 使用反射调用方法和操作成员变量 代理模式 安卓越科技(北京)有限公司 3 本章任务 掌握注解 掌握内置的基本注解类型 掌握自定义注解类型 掌握对注解进行注解 使用反射获取注解信息 安卓越科技(北京)有限公司 4 知识要点 注解 内置的基本注解类型 自定义注解类型 对注解进行注解 使用反射获取注解信息 安卓越科技(北京)有限公司 5 16.1注解概述 用来说明一些说明和解释,JAVA开发和部署工具可以读取这些 注释,并以某种形式处理这些注释。 16.2 JDK内置的基本注解类型 JAVA注解采用标记形式,后面跟上注解类型名称。 安卓越科技(北京)有限公司 6 16.2.1 重写Override Override是一个限定重写方法的注解类型,用来指明被注解的 方法必须是重写超类中的方法,仅仅应用于方法上。 安卓越科技(北京)有限公司 7 public class OverrideTest public static void main(String args) Parent clazz = new Sub(); clazz.myMethod(); class Parent /父类 public void myMethod() System.out.println(“Parent.myMethod()“); class Sub extends Parent /子类继承父类 Override public void myMethod() System.out.println(“Sub.myMethod()“); 安卓越科技(北京)有限公司 8 16.2.2 警告Deprecated 用来标记已过时的成员的注解类型,指明被注解的方法是一个 过时的方法,不建议使用了。 /* JavaSE5.0内置注解类型:Deprecated的使用 */ public class DeprecatedTest Deprecated public void myMethod() System.out.println(“Deprecated注解类型用来标识一个成员已经过 时“); public static void main(String args) DeprecatedTest dt = new DeprecatedTest(); dt.myMethod(); 安卓越科技(北京)有限公司 9 16.2.3 抑制警告SuppressWarnings 用以抑制编译器警告的注解类型,用来指明被注解的方法、变 量或类在编译时如果有警告信息,就阻止警告。 import java.util.ArrayList; import java.util.List; /* JavaSE5.0内置注解类型:SuppressWarnings 的使用 */ public class SuppressWarningsTest SuppressWarnings(“unchecked“) public static void main(String args) List list = new ArrayList(); list.add(“xxx“); 安卓越科技(北京)有限公司 10 16.3 自定义注解类型 类似于接口,只是在interface前多了一个。 /定义自己的一个枚举类型 enum Status ACTIVE, INACTIVE; /* 自定义注解类型 */ public interface MyAnnotation String value(); Status status() default Status.ACTIVE; /给status属性指定默认值 /* 使用自定义注解类型:MyAnnotation */ class UserMyAnnotation MyAnnotation(value=“abc“) /value属性的值为“abc“;status属性使用默认值 Status.ACTIVE public void myMethod() System.out.println(“使用自定义的注解“); MyAnnotation(value=“xxx“, status=Status.INACTIVE) public void myMethod2() System.out.println(“使用自定义的注解“); 安卓越科技(北京)有限公司 11 16.4 对注解进行注解 1.目标Target:用枚举类型指明某种注解的程序元素 import java.lang.annotation.ElementType; import java.lang.annotation.Target; /* 元注解Target的使用 */ Target(ElementType.CONSTRUCTOR, ElementType.METHOD) /表示自定义的这个 注解类型只能作用在构造方法和成员方法上 interface MethodAnnotation /MethodAnnotation /作用在类上 编译出错 public class TargetTest MethodAnnotation /作用在方法上 正确 public void myMethod() 安卓越科技(北京)有限公司 12 2.类别Retention 确定注解保留在class文件中的形式。 3.文档Documented 确保在javadoc生成的文档中包含注解。 import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /* */ public class DocumentedTest DocAnnotation public void myMethod() Documented Retention(RetentionPolicy.RUNTIME) interface DocAnnotation 安卓越科技(北京)有限公司 13 4.继承Inherited 确保父类上的注解被子类继承。 import java.lang.annotation.Documented; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Inherited Retention(RetentionPolicy.RUNTIME) Documented public interface InheritedAnnotation String name(); String value(); InheritedAnnotation(name=“abc“, value=“bcd“) class Perent class SubClass extends Perent 安卓越科技(北京)有限公司 14 16.5 利用反射获取注解信息 要用反射获取注解信息,注解必须是 Retention(RetentionPolicy.RUNTIME) 接口 AnnotatedElement 中有四种反射性读取注解信息的方法: 安卓越科技(北京)有限公司 15 安卓越科技(北京)有限公司 16 安卓越科技(北京)有限公司 17 安卓越科技(北京)有限公司 18 import java.lang.annotation.Annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Method; /* 利用反射动态获取注解的信息 */ public class ReflectAnnotationInfo public static void main(String args) throws SecurityException, NoSuchMethodException /获取类上的指定注解的Annotation实例 Annotation anno1 = UserMyAnno.class.getAnnotation(MyAnno.class); if(anno1 != null) MyAnno myAnno = (MyAnno)anno1; System.out.println(“类上的MyAnno注解:value=“ + myAnno.value(); /取得test()方法的对应的Method实例 Method method = UserMyAnno.class.getMethod(“test“); /取得test()方法上所有的Annotation Annotation annotations = method.getAnnotations(); for(Annotation anno : annotations) System.out.println(“注解类型名:“ + anno.annotationType().getName(); 安卓越科技(北京)有限公司 19 MyAnno class UserMyAnno /在UserMyAnno类上使用MyAnno注解 MyAnno(“method“) Deprecated public void test() /在test
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届高考历史一轮复习模块四选修部分选修三20世纪的战争与和平第47讲第二次世界大战和雅尔塔体系下的冷战与和平学案含解析新人教版
- 小吃店租房合同范例
- 关于水果店转让合同范例
- 工厂木材买卖合同范例
- 建筑承揽合同范例
- 定铺租赁合同范例
- 上海团体旅游合同模板
- 广告公司合同范例
- 化工设备清洗合同模板
- 公园承包摊位合同范例
- 养老机构心理危机应急救援预案
- 《老年人生活照护》试卷A卷及答案
- 2024年上海公务员考试申论试题(A卷)
- 工厂蒸汽管道铺设工程合同
- 电子信息产业园建设项目可行性研究报告
- (一模)宁波市2024学年第一学期高考模拟考试 物理试卷(含答案)
- 压力容器操作人员培训内容考核试卷
- 2024-2025学年上海市普陀区七年级(上)期中数学试卷(含解析)
- 芜湖市大学生乡村医生专项计划招聘考试试卷及答案
- 标准离婚协议书范文(3篇)
- 23年经济师中级考试(工商+经济基础)题(题库版)
评论
0/150
提交评论