나는 비슷한 질문이 물어 Why does Collections.swap copy the input list?에 대한 답이 알고 있지만 내가 부탁 해요 다소 다릅니다 java.util.Collections.swap()에 대해 분명히java.util.Collections.swap에서 경고가 표시되지 않는 이유 (List <?>, int, int)?
public static void swap(List<?> list, int i, int j) {
final List l = list;
l.set(i, l.set(j, l.get(i)));
}
ConsiderJDK1.7 소스 리스트리스트에 쓸 수 없기 때문에 목록 l 별칭이 선언되었습니다. 왜 그런 식으로 rawtype (List l)을 사용했는지에 대한 경고는 나오지 않습니다. 검사되지 않은 방식으로 set()을 수행하는 이유는 이해할 수 없습니다.
내게 더 이상한 점은 @SuppressWarnings ({ "rawtypes", "unchecked") 주석을 달아야한다는 경고를받는 것보다 내 자신의 클래스에서 그 메소드를 맹목적으로 복사하면, })
@SuppressWarnings annotation은 Collections 클래스 전체에서 볼 수 있지만 [swap()이 아닌 일부 메소드에서만]이 동작에 대한 설명이 없습니다.
나는 basilar가 누락 되었습니까?
는
경고가 없다고 생각하는 이유는 무엇입니까? Collections 클래스를 컴파일 했습니까? –
아니요, Collections 클래스를 컴파일하지 않았지만 이제는 swap()이 예상 한 경고를 발행했음을 알게되었습니다. 내 잘못 : 필자는 Sun 프로그래머가 @SuppressWarnings 주석을 통해 억제 할 수있는 경고없이 API를 컴파일하는 데 모든 노력을 기울 였다고 생각했습니다. 그 경우가 아닌 것처럼 보입니다 – user3374707