您的位置:首页 > 编程语言 > Java开发

java之注解(一)

2008-12-01 16:52 501 查看
1.注解的定义package com.eshore.sweetop.annotations;
import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface UseCase { public int id(); public String description() default "no description";}
2.注解的引用package com.eshore.sweetop.annotations;
import java.util.List;
public class PasswordUtils { @UseCase(id=47,description="Passwords must contain at least one numeric") public boolean validatePassword(String password){ return password.matches("//w*//d//w*"); } @UseCase(id=48) public String encryptPassword(String password){ return new StringBuilder(password).reverse().toString(); } @UseCase(id=49,description="New password can't equal previously used ones") public boolean checkForNewPassword(List<String> prevPassword,String password){ return !prevPassword.contains(password); } }
3.注解的处理器package com.eshore.sweetop.annotations;
import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Collections;import java.util.List;
public class UseCaseTracker { public static void trackUseCases(List<Integer> useCases, Class<?> cl) { for (Method m : cl.getDeclaredMethods()) { UseCase uc = m.getAnnotation(UseCase.class); if (uc != null) { System.out.println("Found Use Case:" + uc.id() + " " + uc.description()); useCases.remove(new Integer(uc.id())); } } for (int i : useCases) { System.out.println("Warning: Missing use case-" + i); } }
public static void main(String[] args) { List<Integer> useCases = new ArrayList<Integer>(); Collections.addAll(useCases, 47, 48, 49, 50); trackUseCases(useCases, PasswordUtils.class); }}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: