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); }}
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); }}
相关文章推荐
- Java和Spring注解基本介绍
- JAVA注解
- 深入理解Java:注解(Annotation)自定义注解入门
- 深入理解Java:注解(Annotation)自定义注解入门
- Java中的注解是如何工作的?
- Java注解之Retention、Documented、Inherited介绍
- Java注解(Annotation)
- java自定义注解
- java注解
- Java注解导图
- Java注解(初步)
- java 注解annotation的使用,以及反射如何获取注解
- 深入理解Java:注解(Annotation)基本概念
- spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring
- 2017/2/23 Java SpringAOP拦截Service实现日志管理(自定义注解)
- Java注解Annotation解析
- java之注解开发应用
- 深入理解Java:注解(Annotation)--注解处理器
- java注解实现map与bean之间的转换