参考 JavaEE注解学习:(二)
在程序使用(解析)注解:获取注解中定义的属性值,并利用反射来调用方法
步骤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注解学习:(二)相关推荐
- JavaEE 注解笔记:(一)
* 概念:说明程序的.给计算机看的 * 注释:用文字描述程序的.给程序员看的 * 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性, ...
- AVI音视频封装格式学习(二)——AVI RIFF文件参考
AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...
- Spring 注解学习手札
Spring 注解学习手札 SpringWeb网络应用应用服务器log4j 近来工作发生了一些变化,有必要学习一下Spring注解了! 网上找了一些个例子,总的说来比较土,大多数是转载摘抄,按照提示弄 ...
- java中的枚举类与注解学习笔记
java中的枚举和注解 01.枚举类的使用 1.1.枚举类的理解 1.2.自定义枚举类 1.3.使用enum关键字定义枚举类 1.4.Enum类中的常用方法 1.5.使用enum关键字定义的枚举类实现 ...
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札( ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: ...
- Elasticsearch 学习(二).实战使用
Elasticsearch 学习(二).实战使用 参考:http://www.passjava.cn/#/01.PassJava/02.PassJava_Architecture/15.Elastic ...
- JavaEE——Spring学习笔记01【Ioc开发的模式】
JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...
- @data注解的作用_Java中注解学习系列教程-2
在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解. 本文是注解系列教程中的第二篇.来看看今天主要内容: 1:注解的分类 2:元注解说明 3:自定义注解声明 一:注解的 ...
最新文章
- 【blade利刃出鞘】一起进入移动端webapp开发吧
- Linux内核中的进程等待与其实现解析
- BIETLOLTP之概念熟悉
- java 固定长度队列_如何彻底搞懂 Java 数据结构?|CSDN 博文精选
- 10、存储过程、while语句
- 饿了么618数据:休闲娱乐业增超200% 医美消费者翻倍
- 在Windows 7中安装、配置和使用IIS7和ASP
- 工业循环冷却水处理设计规范_循环冷却水系统及其水处理
- Ubuntu默认Python版本选择
- FocusLab新生大礼包三:Latex安装教程
- KMeans聚类分析实战——如何把城市划分成不同的种类
- 各种单片机芯片封装形式
- 用ESP8266连接 0.96寸 OLED屏幕
- 小甲鱼飞机大战(素材+代码)
- 安装VS2015卡在创建系统还原点
- jijinghao-瞄准镜
- 排列组合 C(n,m)
- 6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)
- CREO图文教程:三维设计案例之矿泉水瓶实例图文教程之详细攻略
- html+css仿QQ邮箱静态界面