컴파일시에 나오는 error 메시지는 물론이고 warning 메시지도 병적으로 없에버리자. 라는 내용입니다.
에러는 나으적. 경고도 나으적 다 죽여버리겠어
사용되지 않는 지역변수 라는 경고메세지나 unchecked 경고메시지 같은 다양한 경고 메시지가 나오는데 모조리 없에버리자는겁니다.
제네릭 타입으로 객체를 생성할때
List <Integer> list =new ArrayList();
이라고 적어도 오류는 안납니다. 근데 경고가 나옵니다.
뒤에 ArrayList<Integer>()이라고 안썼기 떄문입니다. 이부분은 자바7으로 넘어가면서 ArrayList<>(); 이라고만 적어도 된다고 합니다.
근데 이런 경고를 없앨수 없는 경우가 있습니다. 제네릭의 형식으로 배열을 생성할때 생깁니다.
배열의 경우에는 new T[10]; 같은게 안됩니다. 그러면 별수 없이 (T [])new Object[10]; 같은 형식으로 쓸수 밖에 없다. 이렇게 하면 케스팅 경고가 뜹니다. 이렇게 될때는 별수없이 경고 메세지를 제거하는 주석을 사용해야합니다.
@SuppressWarnings("unchecked")
라는 주석을 사용해주면 경고를 지울수 있는데 이는 블럭단위에서도 쓸수 있고 변수 하나 하나에 각각 정해줄수 있습니다.
하지만 이 주석은 블럭 바깥에서 적어주면 블럭 내에 있는 모든 unchecked 경고를 제거하기 때문에 될수 있으면 최대한 좁은 범위에서 설정해주어야 한다.
이외의 경고들은 될수 있으면 병적으로 제거 할수 있도록 하자. 신경 안쓰고 무시하거나 @SuppressWarnings 으로 강제로 경고를 제거해버리면 어디서 어떤 런타임 에러가 터질지 모른다.
에러는 나으적. 경고도 나으적 다 죽여버리겠어
사용되지 않는 지역변수 라는 경고메세지나 unchecked 경고메시지 같은 다양한 경고 메시지가 나오는데 모조리 없에버리자는겁니다.
제네릭 타입으로 객체를 생성할때
List <Integer> list =new ArrayList();
이라고 적어도 오류는 안납니다. 근데 경고가 나옵니다.
뒤에 ArrayList<Integer>()이라고 안썼기 떄문입니다. 이부분은 자바7으로 넘어가면서 ArrayList<>(); 이라고만 적어도 된다고 합니다.
근데 이런 경고를 없앨수 없는 경우가 있습니다. 제네릭의 형식으로 배열을 생성할때 생깁니다.
배열의 경우에는 new T[10]; 같은게 안됩니다. 그러면 별수 없이 (T [])new Object[10]; 같은 형식으로 쓸수 밖에 없다. 이렇게 하면 케스팅 경고가 뜹니다. 이렇게 될때는 별수없이 경고 메세지를 제거하는 주석을 사용해야합니다.
@SuppressWarnings("unchecked")
라는 주석을 사용해주면 경고를 지울수 있는데 이는 블럭단위에서도 쓸수 있고 변수 하나 하나에 각각 정해줄수 있습니다.
하지만 이 주석은 블럭 바깥에서 적어주면 블럭 내에 있는 모든 unchecked 경고를 제거하기 때문에 될수 있으면 최대한 좁은 범위에서 설정해주어야 한다.
@SuppressWarnings("unchecked") public예를 들자면 위의 getA와 getB 에서 바로 return 에서 배열을 생성하면 함수 밖에다가 적어주어야 하지만 변수를 만들어서 리턴한다면 getB 의 result 변수에서만 경고를 지울수 있다.T[] getA(T a) { return (T[]) new Object[10]; } public T[] getB(T a) { @SuppressWarnings("unchecked") T[] result = (T[]) new Object[10]; return result; }
이외의 경고들은 될수 있으면 병적으로 제거 할수 있도록 하자. 신경 안쓰고 무시하거나 @SuppressWarnings 으로 강제로 경고를 제거해버리면 어디서 어떤 런타임 에러가 터질지 모른다.
'Effective Java > Chapter 5' 카테고리의 다른 글
항목 28. 바운드 와일드 카드를 이용해서 API의 유연성을 높이자. (0) | 2012.01.26 |
---|---|
항목 27. 제네릭 메소드를 애용하자. (0) | 2012.01.26 |
항목 26. 제네릭 타입을 애용하자. (0) | 2012.01.25 |
항목 25. 배열보다는 List를 사용하자. (0) | 2012.01.18 |
항목 23. 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. (0) | 2012.01.09 |