답변:
아니요,이 방법은 구아바에 존재하지 않으며 실제로 "아이디어 묘지"에 있습니다.
"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()
평소처럼 사용하시면 됩니다. 장난 꾸러기 API를 호출하자마자이 작업을 즉시 수행하면 무기한으로 계속되는 대신 이상한 점이 발생합니다.
그리고 "빈 컬렉션을 의미하는 null"이 반환되지 않고 전달되는 경우 작업은 간단합니다. 그냥 NullPointerException
던지 도록 내버려두고 호출자를 구성합니다.
null
가능한 한 빨리 빈 컬렉션으로 정규화하여 모호성을 제거하십시오 . 그렇게 할 수 없다면, 당신은 정말로 자신의 사소한 isNullOrEmpty (Collection) 도우미를 작성하고자하는 <1 %의 사용자 중 하나 일 수 있습니다.
if (collection == null || collection.isEmpty())
필요한 경우에 작성 하십시오! 그렇게 나쁩니 까?)
구아바 전역에서 발견되는 경향 중 하나는 null
s 에 대해 매우 적대적인 경향이 있다는 것 입니다. 저자 null
는 당신이 아마 당신이 사용하는 만큼 많이 사용하지 못하도록하고 싶어하며 , 사용하기 쉽게 해주는 유틸리티 방법을 제공하는 null
것은이 목적에 역효과를 줄 것입니다.
Guava의 패러다임을 사용하려면이 컬렉션 (또는 배열)의 소스가 선택적으로를 반환해야하는지 고려하십시오 null
. 그렇지 않은 경우 표시하고 @NonNull
대신 빈 컬렉션을 반환하십시오 null
. 또는 null
값 이없는 목록을 예상하는 함수에 대한 매개 변수로를 사용 Preconditions.checkNotNull
하는 null
것이 좋습니다.이 경우 가 (예기치 않게) 전달 되면 예외가 발생합니다 .
null
정말로 합법적 이라면 그렇게 list == null || list.isEmpty()
어렵지 않습니다.
commons-collections 에는 CollectionUtils.isEmpty () 가 있습니다.
Spring Framework에는 CollectionUtils
. 찾고있는 방법은 다음과 같습니다 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 ())
JDK 컬렉션과 함께 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를 반환합니다.