在程序使用(解析)注解:获取注解中定义的属性值,并利用反射来调用方法

步骤1:获取注解定义的位置的对象  (Class,Method,Field)
步骤2:获取指定的注解
步骤3:调用注解中的抽象方法获取配置的属性值

步骤 4.加载该类进内存
步骤5.创建对象

步骤6:获取方法对象
步骤7.执行方法

eg:

注解类proA

/*** @author KuKaFei.Hai* @date 2020/4/6 : 15:19* @Email : 383232084@qq.com*/import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 注解使用的类名,和该类名下的方法*/
@Target({ElementType.TYPE,ElementType.METHOD})   //使用于类,和方法上
@Retention(RetentionPolicy.RUNTIME)      //给编译器看,所以是RunTime
public @interface ProA {String className();String methodName();
}

TestDomeA 类


/*** @author KuKaFei.Hai* @date 2020/4/6 : 15:30* @Email : 383232084@qq.com*/
public class TestDomeA {public void show(){System.out.println("注解,理解真TM难......");}
}
AnnotationDemo 类(注解的解析类)
package cn.itcsast.Junit;import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;/*** @author KuKaFei.Hai* @date 2020/4/6 : 15:33* @Email : 383232084@qq.com*/@ProA(className = "cn.itcsast.Junit.TestDomeA",methodName = "show")
public class AnnotationDemo {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {/*** 根据注解给的参数,获取相应类和该类下的方法*///步骤一 :获取使用了注解类 AnnotationDemo 它的class 文件,目的是要利用反射,在其中找出使用注解  步骤一Class<AnnotationDemo> annoDemoClass = AnnotationDemo.class;//步骤二:通过反射创建注解类对象ProA annoProA = annoDemoClass.getAnnotation(ProA.class);/*** 通过反射创建注解类对象实质,就是在内存中生成了一个该注解接口的子类实现对象* public class annoProA implements ProA{*                 public String className(){*                     return "cn.itcsast.Junit.TestDemeA";*                 }*                 public String methodName(){*                     return "show";*                 }**             }*///步骤三:调用注解对象中定义的抽象方法,获取返回值String className = annoProA.className();String methodName = annoProA.methodName();System.out.println(className);System.out.println(methodName);//步骤四.加载该类进内存Class demoClass = Class.forName(className);//步骤五.创建对象 1.8 getConstructor().newInstance() 取代了newInstance()Object obj = demoClass.getConstructor().newInstance();//Object obj = demoClass.newInstance();// 步骤六.获取方法Method method = demoClass.getMethod(methodName);// 步骤七.执行方法method.invoke(obj);}
}

参考 JavaEE注解学习:(二)相关推荐

  1. JavaEE 注解笔记:(一)

    * 概念:说明程序的.给计算机看的     * 注释:用文字描述程序的.给程序员看的 * 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性, ...

  2. AVI音视频封装格式学习(二)——AVI RIFF文件参考

    AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...

  3. Spring 注解学习手札

    Spring 注解学习手札 SpringWeb网络应用应用服务器log4j 近来工作发生了一些变化,有必要学习一下Spring注解了! 网上找了一些个例子,总的说来比较土,大多数是转载摘抄,按照提示弄 ...

  4. java中的枚举类与注解学习笔记

    java中的枚举和注解 01.枚举类的使用 1.1.枚举类的理解 1.2.自定义枚举类 1.3.使用enum关键字定义枚举类 1.4.Enum类中的常用方法 1.5.使用enum关键字定义的枚举类实现 ...

  5. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考:  Spring 注解学习手札( ...

  6. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  7. Elasticsearch 学习(二).实战使用

    Elasticsearch 学习(二).实战使用 参考:http://www.passjava.cn/#/01.PassJava/02.PassJava_Architecture/15.Elastic ...

  8. JavaEE——Spring学习笔记01【Ioc开发的模式】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  9. @data注解的作用_Java中注解学习系列教程-2

    在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解. 本文是注解系列教程中的第二篇.来看看今天主要内容: ​ 1:注解的分类 2:元注解说明 3:自定义注解声明 一:注解的 ...

最新文章

  1. 【blade利刃出鞘】一起进入移动端webapp开发吧
  2. Linux内核中的进程等待与其实现解析
  3. BIETLOLTP之概念熟悉
  4. java 固定长度队列_如何彻底搞懂 Java 数据结构?|CSDN 博文精选
  5. 10、存储过程、while语句
  6. 饿了么618数据:休闲娱乐业增超200% 医美消费者翻倍
  7. 在Windows 7中安装、配置和使用IIS7和ASP
  8. 工业循环冷却水处理设计规范_循环冷却水系统及其水处理
  9. Ubuntu默认Python版本选择
  10. FocusLab新生大礼包三:Latex安装教程
  11. KMeans聚类分析实战——如何把城市划分成不同的种类
  12. 各种单片机芯片封装形式
  13. 用ESP8266连接 0.96寸 OLED屏幕
  14. 小甲鱼飞机大战(素材+代码)
  15. 安装VS2015卡在创建系统还原点
  16. jijinghao-瞄准镜
  17. 排列组合 C(n,m)
  18. 6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)
  19. CREO图文教程:三维设计案例之矿泉水瓶实例图文教程之详细攻略
  20. html+css仿QQ邮箱静态界面

热门文章

  1. 苹果被咬一大口!高通获得45亿美元和解金 下一个目标是华为?
  2. 易车与中国海洋报社达成深度合作 开拓海洋主题汽车内容
  3. shell编程追加1
  4. 程序员8月薪资新鲜出炉,圈外人却在酸?
  5. 晨哥真有料丨常见的话题终结者与破解方法
  6. 开发中常用的加密算法大全初步总结
  7. 如何写一份好的求职简历
  8. 等比例缩放图片-opencv
  9. coreboot学习6:ramstage阶段之芯片初始化流程
  10. Eclipse中错误为 Access restriction 的解决方案