【问题标题】:What happened to Guava Constraints? [closed]Guava 约束发生了什么? [关闭]
【发布时间】:2015-11-19 14:27:11
【问题描述】:
我最近遇到了创建一个不接受空值的集合的用例。 Guava Constraints 似乎符合要求。不幸的是,它已在 Guava Release 15 中被弃用。该类在 Release 18 中仍然可用,但访问修饰符已设置为 package private。 Javadoc 中没有任何线索表明是什么取代了它。
那么,我仍然对 Guava Constraints 提供的功能感兴趣,我该怎么办?
【问题讨论】:
标签:
java
collections
guava
【解决方案1】:
来自Constraints (Guava: Google Core Libraries for Java - latest)
已弃用。使用前提条件进行基本检查。代替
受限制的集合,我们鼓励您检查您的先决条件
明确地而不是将这项工作留给集合
执行。对于拒绝 null 的具体情况,请考虑
不可变的集合。此类计划在 Guava 中移除
16.0.
对于迁移,我建议您使用 Guava 代码,将其放在自己的模块中,然后将该模块包含在您的项目中。然后,您可以使用 (Collections2|Lists|Iterables|ect).filter 替换您使用受约束集合作为过滤集合的实例,并使用显式前置条件检查替换其他实例。
如果您的集合看起来可能不包含某些元素作为数据模型中的真正实体,您可以重新实现该特定集合接口(委托给原始集合),并对方法进行适当的先决条件检查添加元素。