Java 에서 Collections.empty List()의 주의사항
3260 단어 자바collections.emptylist()
public void run() {
......
List list = buildList(param);
......
Object newNode = getNode(...);
list.add(newNode);
......
}
public List buildList(Object param) {
if (isInValid(param)) {
return Collections.emptyList();
} else {
......
}
}
buildList 방법 에 서 는'빈 List'를 되 돌려 줄 수 있 습 니 다.나중에 이 List 에 요 소 를 추가 하거나 제거 할 수도 있 습 니 다.그러나 Collections.empty List 방법 에 주의 하지 않 고 EMPTY 를 되 돌려 줍 니 다.LIST:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
이것 은 static final 수식 의 구성원 변수 입 니 다.Empty List 클래스 의 인 스 턴 스 입 니 다.
public static final List EMPTY_LIST = new EmptyList<>();
이 Empty List 는 정적 내부 클래스 로 Array List 와 마찬가지 로 AbstractList 에서 계승 합 니 다.
private static class EmptyList<E>
extends AbstractList<E>
implements RandomAccess, Serializable {
private static final long serialVersionUID = 8842843931221139166L;
public Iterator<E> iterator() {
return emptyIterator();
}
public ListIterator<E> listIterator() {
return emptyListIterator();
}
public int size() {return 0;}
public boolean isEmpty() {return true;}
public boolean contains(Object obj) {return false;}
public boolean containsAll(Collection<?> c) { return c.isEmpty(); }
public Object[] toArray() { return new Object[0]; }
public <T> T[] toArray(T[] a) {
if (a.length > 0)
a[0] = null;
return a;
}
public E get(int index) {
throw new IndexOutOfBoundsException("Index: "+index);
}
public boolean equals(Object o) {
return (o instanceof List) && ((List<?>)o).isEmpty();
}
public int hashCode() { return 1; }
// Preserves singleton property
private Object readResolve() {
return EMPTY_LIST;
}
}
이 EmptList 는 add 방법 을 다시 쓰 지 않 았 고 get 방법 도 Index OutOf Bounds Exception 이상 을 직접 던 지 는 것 을 볼 수 있 습 니 다.add 를 다시 쓰 는 방법 이 없 으 니 부모 클래스 AbstractList 의 add 방법 을 보 세 요.
public boolean add(E e) {
add(size(), e);
return true;
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
직접 던 진 Unsupported Operation Exception 이상 을 볼 수 있 습 니 다.다시 Empty List 류 로 돌아 가면 대외 적 으로 제공 하 는 방법 도 사용 범 위 를 뚜렷하게 제한 했다.Collections.empty List()또는 Collections.EMPTYLIST,빈 목록 의 표지 로 만 생각 하 는 것 이 좋 습 니 다.만약 프로그램의 일부 분기 논리 가 이러한 인 스 턴 스 를 되 돌려 준다 면 테스트 할 때 덮어 쓰 지 않 았 을 것 입 니 다.생산 환경 에서 이 분기 논리 에 이 르 렀 다 면 번 거 로 울 것 입 니 다~
총결산
자바 의 Collections.empty List()주의사항 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 Collections.empty List()에 관 한 주의 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.