컴파일시에 나오는 error 메시지는 물론이고 warning 메시지도 병적으로 없에버리자. 라는 내용입니다.
에러는 나으적. 경고도 나으적 다 죽여버리겠어

사용되지 않는 지역변수 라는 경고메세지나 unchecked 경고메시지 같은 다양한 경고 메시지가 나오는데 모조리 없에버리자는겁니다.

제네릭 타입으로 객체를 생성할때
List <Integer> list =new ArrayList();
이라고 적어도 오류는 안납니다. 근데 경고가 나옵니다.
뒤에 ArrayList<Integer>()이라고 안썼기 떄문입니다. 이부분은 자바7으로 넘어가면서 ArrayList<>(); 이라고만 적어도 된다고 합니다.

근데 이런 경고를 없앨수 없는 경우가 있습니다. 제네릭의 형식으로 배열을 생성할때 생깁니다.
배열의 경우에는 new T[10]; 같은게 안됩니다. 그러면 별수 없이 (T [])new Object[10]; 같은 형식으로 쓸수 밖에 없다. 이렇게 하면 케스팅 경고가 뜹니다. 이렇게 될때는 별수없이 경고 메세지를 제거하는 주석을 사용해야합니다.

@SuppressWarnings("unchecked")
라는 주석을 사용해주면 경고를 지울수 있는데 이는 블럭단위에서도 쓸수 있고 변수 하나 하나에 각각 정해줄수 있습니다.

하지만 이 주석은 블럭 바깥에서 적어주면 블럭 내에 있는 모든 unchecked 경고를 제거하기 때문에 될수 있으면 최대한 좁은 범위에서 설정해주어야 한다.
	@SuppressWarnings("unchecked")
	public  T[] getA(T a) {
		return (T[]) new Object[10];
	}

	public  T[] getB(T a) {
		@SuppressWarnings("unchecked")
		T[] result = (T[]) new Object[10];
		return result;
	}
예를 들자면 위의 getA와 getB 에서 바로 return 에서 배열을 생성하면 함수 밖에다가 적어주어야 하지만 변수를 만들어서 리턴한다면 getB 의 result 변수에서만 경고를 지울수 있다.

이외의 경고들은 될수 있으면 병적으로 제거 할수 있도록 하자. 신경 안쓰고 무시하거나 @SuppressWarnings 으로 강제로 경고를 제거해버리면 어디서 어떤 런타임 에러가 터질지 모른다.
Posted by 동적할당
: