JAVA自定义注解(1)(二)

2014-11-24 07:53:43 · 作者: · 浏览: 2
+ oName + "],[oAge:" + oAge + "],[fruitColor:" + buffer.toString() + "]"); // 判断oType的类型是否是要指定的类型 if (method.getParameterTypes()[0] .equals("com.kute.test.selfannotation.People.PeopleType")) { oType = (PeopleType) oType; } if (method.getParameterTypes()[1] .equals("java.lang.String")) { oName = oName.toString(); } // 反射调用方法并传递参数 ReflectionUtils.invokeMethod(method, clasz, new Object[] { oType, oName, oAge, fruitColor }); } } } } catch (Exception e) { e.printStackTrace(); } } }
3、应用注解

package com.kute.test.selfannotation;

import java.io.Serializable;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.kute.test.selfannotation.People.PeopleType;

@People(age = 20)
public class Student implements Serializable {

	private static final long serialVersionUID = 1L;
	private static Logger logger = LoggerFactory.getLogger(Student.class);

	@People(type = PeopleType.GOODMAN, name = "kute", age = 18, fruitColor = {
			"blue", "white", "green" })
	public void setValue(PeopleType stuType, String stuName, int stuAge,
			String[] fruitColor) {

		StringBuffer buffer = new StringBuffer();
		for (String color : fruitColor)
			buffer.append(color + ",");
		logger.info("成功调用了方法并注入了参数:[" + stuType + "," + stuAge + "," + stuName
				+ ", {" + buffer.toString() + "} ]");
	}

}

4、测试

package test;

import org.junit.Test;

import com.kute.test.selfannotation.AnnotionParse;
import com.kute.test.selfannotation.Student;

public class TestAnnotationParse {
	
	@Test
	public void test() {
		AnnotionParse parse = new AnnotionParse();
		parse.parse(Student.class);
	}
}

5、运行结果

28 [main] INFO com.kute.test.selfannotation.AnnotionParse - 取出了方法的参数:[oType:GOODMAN],[oName:kute],[oAge:18],[fruitColor:blue,white,green,]
28 [main] INFO com.kute.test.selfannotation.Student - 成功调用了方法并注入了参数:[GOODMAN,18,kute, {blue,white,green,} ]