解析自定义注解代替配置文件

注解中的抽象方法即是注解的属性。使用时先对属性赋值再获取属性值即可。
首先定义一个自己的注解

@Target(value = {ElementType.TYPE})	//作用于类上
@Retention(value = RetentionPolicy.RUNTIME)	//作用于运行阶段
@Documented		//表示定义的注解(MyAnno3)会被抽取到api文档
@Inherited		//描述该注解(MyAnno3)会被子类继承
public @interface Pro {
	String className();		//属性1(抽象方法)
	String methodName();	//属性2(抽象方法)
}

@Target表示注解作用的位置,ElementType一般有三种取值,ElementType.TYPE表示该注解能作用在类上;ElementType.METHOD表示能作用在方法上;ElementType.FIELD表示能作用在属性上。
@Retention表示注解作用的阶段,RetentionPolicy有三种取值,RUNTIME表示运行阶段,CLASS表示类加载阶段,RESOURE表示源代码阶段。
@Documented表示定义的注解会被抽取到api文档
@Inherited描述该注解会被子类继承
使用并解析注解

@Pro(className = "Person.Student", methodName = "sleep")		//给Pro注解的属性(抽象方法)赋值
public class Reflect {
	public static void main(String[] args) throws Exception {
		//获取使用注解的类的字节码对象
		Class<Reflect> clathis = Reflect.class;
		//获取指定注解对象
		//本质是在内存中创建了一个该注解接口的子类实现对象
		Pro pro = clathis.getAnnotation(Pro.class);
		String className = pro.className();//获取注解的className属性
		String methodName = pro.methodName();//获取注解的methodName属性
		System.out.println(className);//打印Person.Student
		System.out.println(methodName);//打印sleep
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值