目录
同构容器
异构容器
代码示例
前在阅读【Effective Java(第三版)】的泛型时,书中提到过异构容器与同构容器,这里单独简单记录一下。
同构容器
Java中基础提供的,Set<E>、Map<K, V>、List<E>几种常用的集合,以及ThreadLocal<T>、AtomicReference<V>这种单元数类型容器,它们的类型都是在创建时就已经确定好了的,存放的空间是被参数化的容器,这样就限制了每个容器只有固定数目的类型参数,所以叫同构容器。特点是容器参数化。
异构容器
书中提到,数据库数据每行有多列,如果希望用类型安全的方式来访问所有列。(这里不要理解成日常数据库业务开发方向,当成数据库操作底层提供的jar包、或者动态结构,理解起来可能会更贴切)这时与同构容器相比,拥有更灵活的设定,就是Key参数化,然后将参数化的Key值交给容器进行存入或者取出。用泛型来保障值得类型与Key相匹配。
※这里的键值与Map的键值有些不一样,Map的键值,值的类型是固定的,就算定义Object,取出之后还是需要各自进行类型转换,而异构容器的值取出之后直接就是存入的类型,不需要再次转换。
java 基础组件
代码示例
关于异构容器使用场景猜想
一般的业务开发中很少有场景需要运用到异构容器。Java都是强类型指定,一般运用中不太会遇到需要动态多类型存放的业务场景。
可能在做一些中间件组件时、或者云平台存放不同公司各自制定数据类型时会涉及吧。但是现在一般都会利用Redis,制定好Key的规则,不同类型的数据直接大Json存放,取出之后也是各自的业务逻辑,自己转换类型吧。本文仅做扩展了解就行。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25923.html