BFS 문제를 푸는 과정에서 uses unchecked or unsafe operations 경고가 떴다.
경고를 발생시킨 코드는 아래와 같다.
// 각 노드의 연결 관계를 저장할 리스트 배열 생성 (1부터 n까지 사용)
LinkedList<Integer>[] linkedLists = new LinkedList[n+1];
for (int i = 1; i <= n; i++){
linkedLists[i] = new LinkedList<>();
}
uses unchecked or unsafe operations 경고의 대표적인 원인은 이러하다.
- 제네릭 타입 미지정: 제네릭 타입을 명시하지 않은 경우 컴파일러가 타입 안전성을 보장할 수 없다고 판단한다.
- 제네릭 배열 생성: 예를 들어 LinkedList<Integer>[]와 같은 제네릭 배열은 Java에서 안전하지 않다고 간주되어 경고를 발생시킨다.
따라서, 해당 경고는 주로 제네릭(Generic) 타입을 제대로 사용하지 않았거나, 제네릭 타입의 배열 생성에서 발생하는 문제라고 할 수 있다.
해결 방법
방법 1: 제네릭 타입 명시하기 (추천⭐)
제네릭 타입을 명확히 지정하면 경고를 피할 수 있다. 예를 들어, 아래와 같이 제네릭을 명시하면 된다.
List<String> list = new ArrayList<>(); // 타입 지정
방법 2: @SuppressWarnings("unchecked") 어노테이션 사용
제네릭 배열 생성 시 경고가 발생한다면 @SuppressWarnings("unchecked")를 사용해 경고를 무시할 수 있다. 다음과 같이 사용하면 된다.
@SuppressWarnings("unchecked")
List<Integer>[] linkedLists = new LinkedList[n+1];
for (int i = 1; i <= n; i++) {
linkedLists[i] = new LinkedList<>();
}
요약
unchecked or unsafe operations 경고는 Java가 타입 안정성을 중요하게 생각하기 때문에 발생하는 경고이다.
제네릭 타입을 명시하는 방법을 우선으로 하여 코드를 수정하고, 정말 불가피한 경우에만 @SuppressWarnings 어노테이션을 사용하는 것이 좋겠다.
'코딩테스트 > 자바 스터디' 카테고리의 다른 글
[Java] 람다(Lambda)를 활용한 커스텀 정렬 이해하기 (0) | 2025.04.25 |
---|---|
인텔리제이(Intellij) 화면 확대/축소 줌인/줌아웃 배율 설정하기 (0) | 2024.12.20 |
인텔리제이(Intellij) 자동완성 기능 끄기 (0) | 2024.10.18 |
리플릿(Replit) 자동완성 기능 끄기 (0) | 2024.10.10 |
리플릿(Replit)으로 웹에서 코딩하기 (Java, Python, C++ 등) (3) | 2024.10.10 |