动态修改字段注解的内容

早上同事想要根据不同条件修改注解的内容。百度了一下,按照博客写了个测试用例,现记录如下

博客地址:https://www.cnblogs.com/bear129/p/9040243.html

实体类

@ExcelTarget(value = "rightExcel")
@Setter
@Getter
@ToString
public class RightExcel{
	/**
	 * 日期
	 */
	@Excel(name = "日期", format = "yyyy-MM-dd")
	private Date date;
	/**
	 * 订单数
	 */
	@Excel(name = "订单数")
	private Integer orderNum;
	
	/**
	 * 订单总金额
	 */
	@Excel(name = "订单总金额")
	private Long total;
	/**
	 * 下单人数
	 */
	@Excel(name = "下单人数")
	private Integer userNum;
	
}

目标是修改第一个字段date的format

测试用例代码如下

public class HotelTest {
	@Test
	public void test() throws Exception {
		Class<? extends RightExcel> clazz = new RightExcel().getClass();
		Field declaredField = clazz.getDeclaredField("date");
		declaredField.setAccessible(true);
		Excel annotation = declaredField.getAnnotation(Excel.class);
		 if (annotation != null) {
            InvocationHandler ih = Proxy.getInvocationHandler(annotation);
             Field memberValuesField = ih.getClass().getDeclaredField("memberValues");
             memberValuesField.setAccessible(true);
             Map memberValues = (Map)memberValuesField.get(ih);
             memberValues.put("format", "yyyy-MM");  // set value to false
         }
		 
		Excel annotation2 = declaredField.getAnnotation(Excel.class);
		System.out.println(annotation2);
	}
}

结果:

输出结果是修改后的 

==========================================================================================

嗯,每天进步一点。

猜你喜欢

转载自blog.csdn.net/luo_yu_1106/article/details/92574493