Java反序列化——CommonsCollections中基础知识

一、CC链总结图

二、常见类

1、Map类 --> TransformedMap

Map类是存储键值对的数据结构。 Apache Commons Collections中实现了TransformedMap ,该类可以在一个元素被添加/删除/或是被修改时(即key或value:集合中的数据存储形式即是一个索引对应一个值,就像身份证与人的关系那样),会调用transform方法自动进行特定的修饰变换,具体的变换逻辑由Transformer类定义。

也就是说,TransformedMap类中的数据发生改变时,可以自动对进行一些特殊的变换,比如在数据被修改时,把它改回来; 或者在数据改变时,进行一些我们提前设定好的操作。

至于会进行怎样的操作或变换,这是由我们提前设定的,这个叫做transform。我们可以通过TransformedMap.decorate()方法获得一个TransformedMap的实例

transformedMap.decorate方法:预期是对Map类的数据结构进行转化,该方法有三个参数。

  • 第一个参数为待转化的Map对象

  • 第二个参数为Map对象内的key要经过的转化方法(可为单个方法,也可为链,也可为空)

  • 第三个参数为Map对象内的value要经过的转化方法

2、Transformer接口

Transformer是⼀个接口,它只有⼀个待实现的方法transform:

实现Transformer接口的类:

1.InvokerTransformer

  • CC链中主要用的的方法之一,传入任意类进行反射调用任何方法。

  • 在实例化这个InvokerTransformer时,需要传入三个参数,第⼀个参数是执行的方法名,第⼆个参数是这个函数的参数列表的参数类型,第三个参数是传给这个函数的参数列表。

2.ChainedTransformer

  • 多个Transformer串起来,形成ChainedTransformer,当触发时,ChainedTransformer可以按顺序调用一系列的变换。

3.ConstantTransformer

  • 把一个对象转化为常量,并返回。他的作⽤其实就是包装任意⼀个对象,在执⾏回调时返回这个对象,进而方便后续操作。

4.InstantiateTransformer

  • 这个Transformer的作用主要是调用构造方法

参考连接:

https://www.cnblogs.com/ssooking/p/5875215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thunderclap_

点赞、关注加收藏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值