我看到Guava有用于字符串的isNullOrEmpty实用程序方法
Strings.isNullOrEmpty(str)我们有没有类似的列表?就像这样
Lists.isNullOrEmpty(list),它应该等同于
list == null || list.isEmpty()另外,我们有没有类似的数组?就像这样
Arrays.isNullOrEmpty(arr),它应该等同于
arr == null || arr.length == 0发布于 2011-08-03 11:17:17
不,这种方法在Guava中不存在,实际上是在我们的“想法墓地”中。
我们不相信"is null or empty“是你真正想问的关于集合的问题。
如果一个集合可能是null,并且null应该被视为空的,那么提前消除所有的歧义,如下所示:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}或者像这样(如果你喜欢):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());在那之后,你可以像平常一样使用.isEmpty()。在调用naughty API时立即执行此操作,您就已经将怪异抛在脑后,而不是让它无限期地继续下去。
如果"null实际上意味着空集合“不是返回给您,而是传递给您,那么您的工作就很简单:只需抛出一个NullPointerException,并使调用者成形即可。
发布于 2011-08-02 20:28:42
在整个Guava中,你会发现一件事,那就是他们往往对null非常反感。作者希望阻止你尽可能多地使用null,而提供实用方法来使null更容易使用将会适得其反。
如果您想使用Guava的范例,请考虑这个集合(或数组)的源代码是否真的应该选择性地返回null。如果不是,请考虑将其标记为@NonNull,并返回空集合而不是null。或者作为不需要null-valued列表的函数的参数,可以考虑使用Preconditions.checkNotNull,如果(意外地)传入了null,它就会抛出异常。
如果null真的是合法的,那么list == null || list.isEmpty()也没那么难。
发布于 2011-10-01 10:44:11
commons- CollectionUtils.isEmpty()中有一个集合。
https://stackoverflow.com/questions/6910002
复制相似问题