动态修改字段注解的内容

同事想根据不同条件修改注解内容,通过参考博客写了测试用例。目标是修改实体类第一个字段date的format,测试输出结果为修改后的内容,记录此过程以促进自身进步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

博客地址: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);
	}
}

结果:

输出结果是修改后的 

 

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

嗯,每天进步一点。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值