java注解基础知识

1、概述
注解有点像接口(annotation 有点像 interface)
2、创建注解

package com.eimageglobal.common.biz.annotation;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

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

/**
 *  注解有点像是接口
 * @author chenyufeng
 *
 */
@Retention(RUNTIME)
@Target(METHOD)
public @interface UseCase {
	//注解元素可以是基本类型、String、Class、enum、Annotation
	//及以上类型的数组
	public int id() ;
	public String description() default "no description";
	
	public String[] versions() ;
}

2、注解的使用:在类、方法、属性等地方进行标注

package com.eimageglobal.common.biz.util;

import com.eimageglobal.common.biz.annotation.UseCase;

public class PasswordUtils {
	//如何使用?
	//小括号里面对注解元素进行赋值
	@UseCase(id=47,description="Password must contains at least ome numeric",versions= {"1.0","3.0"})
	public boolean validatePassword(String password) {
		return password.matches("\\w*\\d\\w*");
	}
	
	//方法有default实现的可以不用赋值,会使用默认值
	//如果是注解元素类型是数组,也可以直接用一个值,编译器会帮你转化为长度为1的数组
	@UseCase(id=48,versions="2.0")
	public String encryptPassword(String password) {
		return new StringBuilder(password).reverse().toString();
	}
}

3、注解处理器

package com.eimageglobal.common.biz.annotation.handler;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import com.eimageglobal.common.biz.annotation.UseCase;
import com.eimageglobal.common.biz.util.PasswordUtils;
/**
 * 注解处理类
 * @author chenyufeng
 *
 */
public class UseCaseHandler {
	public static void trackUseCases(List<Integer> useCases,Class<?> cl) {
		for (Method method : cl.getDeclaredMethods()) {
			UseCase useCase = method.getAnnotation(UseCase.class);
			if (useCase!=null) {
				System.out.println("Found User Case : " + useCase.id() + " versions:" +Arrays.toString(useCase.versions()));
				useCases.remove(new Integer(useCase.id()));
			}
		}
		for (Integer integer : useCases) {
			System.out.println("Warning : Missing use case-"+integer);
		}
	}
	
	
	public static void main(String[] args) {
		List<Integer> useCases = new ArrayList<Integer>();
		Collections.addAll(useCases, 47,48,49);
		trackUseCases(useCases, PasswordUtils.class);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值