java 可以动态的给一个类的属性添加或删除(忽略)注解吗?? 求解

咖啡加糖_ 2020-08-26 12:05:20
比如

@Excel(name="新增、修改追加成功",width=20)
private Integer addSuccNum;
@Excel(name="退单",width=14)
private Integer backNum;

在有的场景需要这个注解 但是部分场景 其中一部分属性有不需要,具体哪些属性不确定,需要动态设置
求解了
...全文
2169 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37642380 2022-09-02
  • 打赏
  • 举报
回复

public static Class configClass(Class c, Map<String, ModelAttribute> attributeMap) {
Field[] fields = c.getDeclaredFields();
try {
for (int i = 0; i < fields.length; i++) {
Field f = fields[i];
String attributeName = f.getName();
if (attributeName.startsWith("param_")) {
if (attributeMap.containsKey(attributeName)) {
String attributeLable = attributeMap.get(attributeName).getAttributeLabel();
Excel excelAn = f.getAnnotation(Excel.class);//Excel是注解类型
if (excelAn == null) {
continue;
}
InvocationHandler h = Proxy.getInvocationHandler(excelAn);
Field hField = h.getClass().getDeclaredField("memberValues");
// 因为这个字段是 private 修饰,所以要打开权限
hField.setAccessible(true);
// 获取 memberValues
Map memberValues = (Map) hField.get(h);
// 修改 value 属性值 这里修改的是@Excel(name = "姓名")
//name是key
memberValues.put("name", attributeLable);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return c;
}

阿Freak 2021-10-14
  • 打赏
  • 举报
回复 1

怎么解决的了?我这边也是这个需求

阿Freak 2021-10-14
  • 打赏
  • 举报
回复

ruoyi

咖啡加糖_ 2020-08-26
  • 打赏
  • 举报
回复
引用 1 楼 whyfive4 的回复:
如果有些场景只需要一部分,那将这一部分提到另一个类里,做更细粒度的划分,可读性可能好一点
不好提,因为这部分是不确定的,是维护在数据库中的,其实问这个问题主要是因为导入导出功能封装过了,公司不让改源码,现在已经申请改源码了
Tket 2020-08-26
  • 打赏
  • 举报
回复
如果有些场景只需要一部分,那将这一部分提到另一个类里,做更细粒度的划分,可读性可能好一点

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧