Guavaには文字列用のisNullOrEmptyユーティリティメソッドがあることがわかります
Strings.isNullOrEmpty(str)
リストに類似したものはありますか?何かのようなもの
Lists.isNullOrEmpty(list)
これは次と同等である必要があります
list == null || list.isEmpty()
また、配列についても同様のものはありますか?何かのようなもの
Arrays.isNullOrEmpty(arr)
これは次と同等である必要があります
arr == null || arr.length == 0
いいえ、この方法はグアバには存在せず、実際には「アイデアの墓地」にあります。
「nullまたは空」は、コレクションについて本当に聞きたい質問であるとは考えていません。
コレクションがnullである可能性があり、nullを空と同じように処理する必要がある場合は、次のようにすべてのあいまいさを事前に回避してください。
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
またはこのように(必要な場合):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
その後は、通常どおり.isEmpty()
を使用できます。いたずらなAPIを呼び出したらすぐにこれを行い、無期限に続けるのではなく、背後に奇妙さを置きます。
そして、「空のコレクションを実際に意味するヌル」が返されずに渡される場合、あなたの仕事は簡単です。ただNullPointerException
を投げさせ、その呼び出し元を形作るだけです。
グアバ全体で見つかる傾向があるのは、null
sに対して非常に敵対的である傾向があるということです。作者は、おそらくあなたがnull
を使うことを思いとどまらせたいと思っています。そして、null
を使いやすくするユーティリティメソッドを提供することは、この目的に対して逆効果です。
Guavaのパラダイムを使用する場合は、このコレクション(または配列)のソースがオプションでnull
を返す必要があるかどうかを検討してください。そうでない場合は、@NonNull
とマークし、null
の代わりに空のコレクションを返すことを検討してください。または、null
- valuedリストを期待していない関数のパラメーターとして、null
が(予期せず)渡された場合に例外をスローするPreconditions.checkNotNull
の使用を検討してください。
null
が本当に正当なものであれば、list == null || list.isEmpty()
はそれほど難しくありません。
Commons-collectionsには CollectionUtils.isEmpty() があります。
Spring Frameworkには、CollectionUtils
という特殊なutilクラスがあります。探しているメソッドはorg.springframework.util.CollectionUtils.isEmpty
です。 nullおよび空のコレクションに対してtrueを返します。
配列の場合、org.springframework.util.ObjectUtils.isEmpty
メソッドがあり、ほぼ同じ動作をします。
Apache CollectionUtils 4には、コレクションがnullの場合に空のリストを返すメソッド CollectionUtils.emptyIfNull() があります。これはforeachループで非常に役立つため、反復する前にnullチェックを行う必要はありません。
私の解決策は次のとおりです。MoreObjects.firstNonNull(list、Collections。emptyList())
JavaコレクションでGuava MoreObjectsを使用しています。
@Test
public void listnull() {
List<String> list = null;
for (String str : MoreObjects.firstNonNull(list, Collections.<String> emptyList())) {
System.out.println(str);
}
list = new ArrayList<String>();
list.add("http://stackoverflow.com/");
for (String str : MoreObjects.firstNonNull(list, Collections.<String> emptyList())) {
System.out.println(str);
}
}
Appacheコレクションを見るCollectionUtils.isEmpty()は、コレクションがnullまたは空の場合にtrueを返します