温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用java的注解(用在java类的方法上的注解)方法

发布时间:2020-09-24 07:30:25 来源:脚本之家 阅读:294 作者:zhangbeizhen18 栏目:编程语言

场景:根据方法上的注解,通过java反射方式找到需要执行的的方法。

1.注解类

 /**注解作用在方法上*/ @Target({ElementType.METHOD}) /**注解的生命周期一直程序运行时都存在VM运行期间保留注解,可以通过反射机制读取注解信息*/ @Retention(RetentionPolicy.RUNTIME) /**注解包含在Javadoc中*/ @Documented public @interface Item {	String value(); }

2.在类的方法上使用注解

 public class WorkService {	private static Logger logger = LoggerFactory.getLogger(WorkService.class);	@Item("1001")	public int getItem1001Info(GirlVo girl) {	logger.info("getItem1001Info输出:");	logger.info(girl.toString());	return 1;	}	@Item("1002")	public int getItem1002Info(GirlVo girl) {	logger.info("getItem1002Info输出:");	logger.info(girl.toString());	return 1;	}	@Item("1003")	public int getItem1003Info(GirlVo girl) {	logger.info("getItem1003Info输出:");	logger.info(girl.toString());	return 1;	}	@Item("1004")	public int getItem1004Info(GirlVo girl) {	logger.info("getItem1004Info输出:");	logger.info(girl.toString());	return 1;	}	@Item("1005")	public int getItem1005Info(GirlVo girl) {	logger.info("getItem1005Info输出:");	logger.info(girl.toString());	return 1;	}	@Item("1006")	public int getItem1006Info(GirlVo girl) {	logger.info("getItem1006Info输出:");	logger.info(girl.toString());	return 1;	} }

3.实体类,作为参数传递

 public class GirlVo implements Serializable {	private static final long serialVersionUID = -8545755852948661858L;	/**ID号*/	private String girlId;	/**姓名*/	private String girlName;	/**年龄*/	private Long age;	/**身高*/	private Double height;	/**罩杯*/	private String cupSize;	public String getGirlId() {	return girlId;	}	public void setGirlId(String girlId) {	this.girlId = girlId;	}	public String getGirlName() {	return girlName;	}	public void setGirlName(String girlName) {	this.girlName = girlName;	}	public long getAge() {	return age;	}	public void setAge(long age) {	this.age = age;	}	public double getHeight() {	return height;	}	public void setHeight(double height) {	this.height = height;	}	public String getCupSize() {	return cupSize;	}	public void setCupSize(String cupSize) {	this.cupSize = cupSize;	}	@Override	public String toString() {	return "GirlVo [girlId=" + girlId	+",girlName=" + girlName	+",age=" + age	+",height=" + height	+",cupSize=" + cupSize	+"]";	} }

4.反射调用方法注解的类

 List<Method> methods = MethodUtils.getMethodsListWithAnnotation(clazz,Item.class); for (Method method : methods) { for (Annotation annotation : method.getDeclaredAnnotations()) { if (annotation instanceof Item){ String code = ((Item) annotation).value(); if (Objects.equals(item, code)){ try {	logger.info("注解号:" + code +" 执行开始...");	method.invoke(clazz.newInstance(), girlVo);	logger.info("注解号:" + code +" 执行结束...");	} catch (Exception e) {	e.printStackTrace();	logger.info("抛异常...");	} } } } }	} }

5.main方法测试类

 public class TestAnnotation {	private static Logger logger = LoggerFactory.getLogger(TestAnnotation.class);	public static void main(String []args) throws ClassNotFoundException{	logger.info("测试开始......");	HashMap<String,Object> map = (HashMap<String,Object>) getData();	/**遍历hashMap*/	for(Entry<String,Object> entry : map.entrySet()){	String item = entry.getKey();	GirlVo girlVo = (GirlVo) entry.getValue();	ReflectCallMethodAnnotation.annotationMethod(item,girlVo);	}	logger.info("测试结束......");	}	public static Map getData() {	HashMap<String ,Object> data = new HashMap();	GirlVo girlVo1 = new GirlVo();	girlVo1.setGirlId("1001");	girlVo1.setGirlName("张一");	girlVo1.setAge(27);	girlVo1.setHeight(169);	girlVo1.setCupSize("F");	GirlVo girlVo2 = new GirlVo();	girlVo2.setGirlId("1002");	girlVo2.setGirlName("王二");	girlVo2.setAge(29);	girlVo2.setHeight(175);	girlVo2.setCupSize("B");	GirlVo girlVo3 = new GirlVo();	girlVo3.setGirlId("1003");	girlVo3.setGirlName("刘五");	girlVo3.setAge(24);	girlVo3.setHeight(160);	girlVo3.setCupSize("B");	GirlVo girlVo4 = new GirlVo();	girlVo4.setGirlId("1004");	girlVo4.setGirlName("陈六");	girlVo4.setAge(21);	girlVo4.setHeight(168);	girlVo4.setCupSize("C");	GirlVo girlVo5 = new GirlVo();	girlVo5.setGirlId("1005");	girlVo5.setGirlName("赵七");	girlVo5.setAge(25);	girlVo5.setHeight(169);	girlVo5.setCupSize("C");	GirlVo girlVo6 = new GirlVo();	girlVo6.setGirlId("1006");	girlVo6.setGirlName("张八");	girlVo6.setAge(26);	girlVo6.setHeight(165);	girlVo6.setCupSize("A");	data.put("1001", girlVo1);	data.put("1002", girlVo2);	data.put("1003", girlVo3);	data.put("1004", girlVo4);	data.put("1005", girlVo5);	data.put("1006", girlVo6);	return data;	} }

以上所述是小编给大家介绍的使用java的注解(用在java类的方法上的注解)方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI