关于Java中的Map的浅拷贝和深拷贝问题

在Java中,Map的浅拷贝和深拷贝可能导致意外的数据修改。当尝试删除Map中的某个字段时,由于拷贝的问题,原始参数中的对象也会受到影响。本文探讨了浅拷贝和深拷贝的定义,以及何时选择使用它们。浅拷贝仅复制引用,而深拷贝则复制对象及其引用的对象。通过理解这两种拷贝方式,可以更好地避免在处理Map时遇到的问题。
摘要由CSDN通过智能技术生成

关于Java中的Map的浅拷贝和深拷贝问题

发生背景

  • 生产打印的log会有图片的Base64码 这并不是我们实际日志中需要关心的东西
  • 想定的解决案是在切面打印日志类中删除掉打印log的字段

使用过程

  • 根据方法的参数做区分 定位到对应的参数是 删除掉参数中的图片字段

    • 代码
    if (args.length == 1 && args[0] instanceof Map){
         
        Map<String,Object> argMap = (Map)args[0];
        argMap.remove("picture");
        log.info("{}.{} : 接口调用开始--> 请求参数:{} ", method.getDeclaringClass().getName(), method.getName(),
                 JSONObject.toJSONString
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值