番石榴约束怎么了?

时间:2015-11-19 14:27:12

标签: java collections guava

我最近遇到了用例来创建一个不接受空值的集合。 Guava Constraints似乎符合要求。不幸的是,它已在Guava Release 15中弃用。该类在版本18中仍然可用,但访问修饰符已设置为包私有。 Javadoc中没有任何线索替代它。

所以,仍然对Guava Constraints提供的功能感兴趣,我该怎么办?

1 个答案:

答案 0 :(得分:3)

来自Constraints (Guava: Google Core Libraries for Java - latest)

  

已过时。使用前提条件进行基本检查。代替   限制集合,我们鼓励您检查您的前提条件   明确而不是将该工作留给集合   实现。对于拒绝null的特定情况,请考虑   不可变的集合。该课程计划在番石榴中移除   16.0。

对于迁移,我建议您使用Guava代码,将其放在自己的模块中,并将其包含在项目中。然后,您可以将使用约束集合的实例替换为具有(Collections2|Lists|Iterables|ect).filter的过滤集合,并将其他实例替换为显式前置条件检查。

如果您的数据模型中有一个可能不包含某些元素作为真实实体的集合,您可以使用对该方法的适当前提条件检查重新实现该特定集合接口(委托给原始集合)。添加元素。