




已阅读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年高级职业技术岗位考试试题及答案
- 2025年工程造价员考试试题及答案
- 2025年新型农村合作医疗考试卷及答案
- 体检中心护士健康教育
- 茶叶原料基地建设与供应协议
- 茶楼茶楼茶艺表演节目制作合同
- 仓储物流场地无偿租用合同书范本
- 餐饮加盟店信息保密及授权协议
- 起重机械培训(初训)课件
- 2024-2030年中国外资医院行业发展现状及投资管理模式分析报告
- 【MOOC】推 荐系统-北京大学 中国大学慕课MOOC答案
- 古田会议的课件
- 停车场环境卫生保洁方案
- 食品生产企业食品安全培训
- 《家庭系统排列讲座》课件
- 超抗原在神经退行性疾病治疗中的作用
- 帝国的兴衰:修昔底德战争史学习通超星期末考试答案章节答案2024年
- 4.1 实体与虚空-凝固的音乐 教学设计高中音乐人美版(2019)必修 音乐鉴赏
- 2024中级注册安全工程师职业资格考试(道路运输安全)
评论
0/150
提交评论