在Guava中使用ForwardingMap有什么用?

Hos*_*ein 6 java guava

我在理解ForwardingMap的使用时摸不着头脑?有人可以使用它的情况是什么?

Xae*_*ess 15

ForwardingXxx类为所有JDK和Guava集合提供装饰器模式实现,包括Map.

阅读更多关于Guava维基Effective Java第2版的内容,第16项:赞成合成而不是继承:

总而言之,继承是强大的,但它是有问题的,因为它违反了封装.仅当子类和超类之间存在真正的子类型关系时才适用.即使这样,如果子类与超类位于不同的包中,并且超类不是为继承而设计的,那么继承可能会导致脆弱.要避免这种脆弱性,请使用组合和转发而不是继承,尤其是在存在实现包装类的适当接口的情况下.包装类不仅比子类更健壮,而且功能更强大.

基本上,它允许您自定义可能不可扩展的Maps而不添加对实际Map实现的依赖性.