首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌芭乐isNullOrEmpty收藏

谷歌芭乐isNullOrEmpty收藏
EN

Stack Overflow用户
提问于 2011-08-02 17:37:06
回答 7查看 82K关注 0票数 106

我看到Guava有用于字符串的isNullOrEmpty实用程序方法

代码语言:javascript
复制
Strings.isNullOrEmpty(str)

我们有没有类似的列表?就像这样

代码语言:javascript
复制
Lists.isNullOrEmpty(list)

,它应该等同于

代码语言:javascript
复制
list == null || list.isEmpty()

另外,我们有没有类似的数组?就像这样

代码语言:javascript
复制
Arrays.isNullOrEmpty(arr)

,它应该等同于

代码语言:javascript
复制
arr == null || arr.length == 0
EN

回答 7

Stack Overflow用户

发布于 2011-08-03 11:17:17

不,这种方法在Guava中不存在,实际上是在我们的“想法墓地”中。

我们不相信"is null or empty“是你真正想问的关于集合的问题。

如果一个集合可能是null,并且null应该被视为空的,那么提前消除所有的歧义,如下所示:

代码语言:javascript
复制
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
  foos = ImmutableSet.of();
}

或者像这样(如果你喜欢):

代码语言:javascript
复制
Set<Foo> foos = MoreObjects.firstNonNull(
    NaughtyClass.getFoos(), ImmutableSet.<Foo>of());

在那之后,你可以像平常一样使用.isEmpty()。在调用naughty API时立即执行此操作,您就已经将怪异抛在脑后,而不是让它无限期地继续下去。

如果"null实际上意味着空集合“不是返回给您,而是传递给您,那么您的工作就很简单:只需抛出一个NullPointerException,并使调用者成形即可。

票数 146
EN

Stack Overflow用户

发布于 2011-08-02 20:28:42

在整个Guava中,你会发现一件事,那就是他们往往对null非常反感。作者希望阻止你尽可能多地使用null,而提供实用方法来使null更容易使用将会适得其反。

如果您想使用Guava的范例,请考虑这个集合(或数组)的源代码是否真的应该选择性地返回null。如果不是,请考虑将其标记为@NonNull,并返回空集合而不是null。或者作为不需要null-valued列表的函数的参数,可以考虑使用Preconditions.checkNotNull,如果(意外地)传入了null,它就会抛出异常。

如果null真的是合法的,那么list == null || list.isEmpty()也没那么难。

票数 37
EN

Stack Overflow用户

发布于 2011-10-01 10:44:11

commons- CollectionUtils.isEmpty()中有一个集合。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6910002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档