java自定义Annotation

相信在使用java编程的过程中,大家对于Annotation已经见怪不怪了,常见的有@Override、@Deprecated和一些开源框架(例如spring、hibernate等)中定义的Annotation。

Annotation可以用来修饰类、属性、方法,其不影响程序的运行,通过它来标识代码,能够起到代码分析、编译检查的作用。

下面通过一个例子来实现自定义Annotation的实现:

1、按照格式来定义一个Annotation

 

@Retention(RetentionPolicy.RUNTIME)//注解在运行时才有效
@Target({ElementType.ANNOTATION_TYPE,ElementType.METHOD})//限制注解的使用范围(用在类和方法的声明)
public @interface MyAnnotation {

	public String value() default "test";//定义变量,默认值为test
}

 其中@Retention限制了Annotation的保存范围,@Target限制了Annotation的定义位置(如修饰类或者修饰方法等等)。value为定义的Annotation的属性,并设置了默认值,在使用这个Annotation的时候可以传递参数。

 

2、编写一个类的方法来使用定义的Annotation来修饰

public class Simple {

	@MyAnnotation("hello")
	public void test(String name){
		System.out.println("test my annotation!");
		System.out.println("my name:"+name);
	}
}

 在test方法中使用了自定义的Annotation修饰,并传递参数。

 

3、编写测试类,通过反射机制来取得Annotation中的内容

public class Test {

	public static void main(String[] args) {
		try {
			Class<?> c=Class.forName("annotation.Simple");
			Method m=c.getMethod("test", String.class);//取得test方法
			m.invoke(c.newInstance(), "john");
			if(m.isAnnotationPresent(MyAnnotation.class)){//判断Annotation的类型
				MyAnnotation my=m.getAnnotation(MyAnnotation.class);//得到test方法使用的Annotation
				String value=my.value();//得到传递的参数
				System.out.println("value="+value);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 通过控制台显示的信息可以发现,自定义Annotation的功能基本实现。

 

精彩科技工作室
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值