특정 중복을 제거하고 List
에서 작동하는 메서드가 있습니다. 알고리즘은 RandomAccess을 구현하는 목록에서만 효율적입니다. 오용과 실망스러운 성능을 방지하기 위해 RandomAccess
제한을 적용하는 방법을 궁금합니다. RandomAccess
인터페이스는 불행하게도 List
을 확장하지 않으므로 변수를 한 번에 두 가지 유형으로 만들 필요가 있습니다.메서드를 RandomAccess 목록으로 제한
나는 ArrayList
보다는 List
을 수용 할 수있는 방법을 선언 할 수 있지만, 다른 목록 유형 (예를 들어, 목록이 Collections.synchronizedList
및 Collections.checkedList
에 의해 반환) 너무 RandomAccess
을 구현할 수 있고, 나는 그를 차단하고 싶지 않아요. 덜 강력한 인
if (!(list instanceof RandomAccess))
throw new UnsupportedOperationException("RandomAccess list required");
그러나 제한은 런타임에 적용됩니다 :
나는 제네릭을 시도했지만 작동 구문을 만들 수 없습니다 :public <T> void process(<List<T> extends RandomAccess> list) {
...
}
은 내가 할 수있는을 .
도움 말?
: A (비 컴파일 가능한, 두 번째 호출을 제거하지 않는) 클래스로 퍼팅
여기를보세요 : http://stackoverflow.com/q/745756/484441 – nmaier