用JDK中Annotation写的一个注解

本文介绍如何自定义Java注解并应用于方法级别,实现方法是否需要进行测试的标记,并通过反射读取这些注解来判断哪些方法需要进行测试。

先新建一个Annotation工程

package com.lbx.annotation;

/**
 * 定义注解
 */

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(value=RetentionPolicy.RUNTIME)   //声明注解的保留期限
@Target(ElementType.METHOD)                 //声明注解的使用范围
public @interface NeedTest {
	
	boolean value() default true;
	
}

 

 

在程序中使用自己定义的注解

package com.lbx.service;

import com.lbx.annotation.NeedTest;

/**
 * 使用注解
 * @author Administrator
 *
 */

public class ForumService {

	@NeedTest(value = true)
	public void deleteForum(int id){
		System.out.println("删除Forum:   " + id);
	}
	
	@NeedTest(value=false)
	public void deleteTopic(int id){
		System.out.println("删除Topic:   " + id);
	}
	
}

 

 

 

测试

package com.lbx.test;

import java.lang.reflect.Method;

import com.lbx.annotation.NeedTest;
import com.lbx.service.ForumService;

/**
 * 测试注解
 * @author Administrator
 *
 */

public class TestAnnotation {

	public static void main(String[] args) {
		Class c = ForumService.class;    //获得相应的Class对象
		//先要得到目标对象的Method数组
		Method[] methods = c.getDeclaredMethods();
		System.out.println(methods.length);
		for (int i = 0; i < methods.length; i++) {
			Method method = methods[i];
			NeedTest n = method.getAnnotation(NeedTest.class);
			if(n!=null){
				if(n.value()){
					System.out.println(method.getName() + "()需要测试");
				}else{
					System.out.println(method.getName() + "()不需要测试");
				}
			}
		}
	}
	
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值