先新建一个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() + "()不需要测试");
}
}
}
}
}