본문 바로가기

Java

[JAVA] Java Collection 계열 사용시 Warning 제거방법


아래와 같은 코드는 컴파일시 Warning 메세지를 뿜어냅니다.

import java.util.*;

public class ArrayListGeneric {
  public static void main(String[] args) {
    ArrayList data = new ArrayList();
    data.add("hello");
    data.add("world");


    Iterator<String> it = data.iterator();
    while (it.hasNext()) {
      String s = it.next();
      System.out.println(s);
    }
  }
}

Warning 이라는 경고를 제거하기 위해서는 두가지 방법이 있습니다.
Generic 을 이용하는 방법과 Annotation 을 이용하는 방법입니다.
먼저 Generic 을 이용한 코드는 아래와 같습니다.
아래 코드를 보면 Collection 계열 사용시에 담아올 형 타입을 미리 정의 해주므로서 컴파일시 나타나게 되는
경고가 제거 되는 형태입니다.
import java.util.*;

public class ArrayListGeneric {
  public static void main(String[] args) {
    ArrayList<String> data = new ArrayList<String>();
    data.add("hello");
    data.add("world");


    Iterator<String> it = data.iterator();
    while (it.hasNext()) {
      String s = it.next();
      System.out.println(s);
    }
  }
}

Annotation 을 이용한 방법은 코드는 아래와 같습니다.
원래 어노테이션의 목적이 컴파일러에게 알려주는 주석의 목적인데 아래 방법은 컴파일러에게
경고따위 무시해라 (ㅡㅡ;) 라는 내용입니다. 복잡한 세상 간단하게 사는 것도 좋은 방법이겠죠? ^^;
import java.util.*;

public class ArrayListGeneric {

  @SuppressWarnings("unchecked") 
  public static void main(String[] args) {
    ArrayList data = new ArrayList();
    data.add("hello");
    data.add("world");


    Iterator it = data.iterator();
    while (it.hasNext()) {
      String s = it.next();
      System.out.println(s);
    }
  }
}

경고를 제거하는 2가지 방법이 있지만 Annotation 을 이용하는 방법은 문제의 해결이라기 보다 회피하는 방법이니
Generic 을 이용해서 데이터형을 체크하는 코드를 추천합니다.