早上同事想要根据不同条件修改注解的内容。百度了一下,按照博客写了个测试用例,现记录如下
博客地址: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);
}
}
结果:
输出结果是修改后的
==========================================================================================
嗯,每天进步一点。