내용은 많지만 제목 그대로 제네릭 타입을 애용하자는 이야기다.

제네릭을 쓰게되면 여러가지 장점이 있는데 우선은 자료형이 명확해진다는거고 그덕분에 사용하기 쉬워진다.
자료를 넣거나 꺼낼때 어떤 자료형을 가졌는지 체크해야하는 부분을 제네릭을 통해서 모두 걸러주게된다.

특히 자료구조를 설계, 작성할때 반드시 제네릭으로 만들것을 추천한다.
절대적으로 무조건 한가지의 타입만을 이용하는 자료구조라 하더라도 <E extend XXXX >의 형식을 가진 제네릭으로라도 만들어 두는편이 좋다. 별다른 작업없이 제네릭 부분만 바꿔 써줌으로서 다른곳에서도 쓸수 있기 때문에 재사용성이라는 객체지향 프로그래밍의 주제에도 알맞다고 생각된다.

 반드시 배열을 써야 하는곳에서는 제네릭을 쓰기가 좀 까다로운데
Object 배열로 생성을 한뒤 제네릭 배열-(E [])- 로  캐스팅을 해줘야한다.
이때 항상 Warning 이 뜨게되는데 @SuppressWarning("unchecked") 를 넣어주어야한다. 작성시 조금 주의를 해주어야 하겠지만 이부분만 잘 지나가면 다른 부분에서는 그냥 제네릭 타입을 쓸수 있게된다.

또한가지 사용법은 위에서 작성한  <E extend XXXX > 라는 녀석을 잘 써야 하는데 자료구조를 작성할때 A 라는 리스트의 원소들은 반드시 Comparable 인터페이스를 구현해야한다. 라고하는 조건이 있다면.
class A implements List<Comparable> {
}
보다는
class A<E extends Comparable<E>> implements List<E> {
}
이 훨씬 낫다. 애초에 위에 코드가 더 이상하긴 하다..

하여튼 자료구조를 작성할때는 반드시 제네릭을 써야한다 라고 생각하면서 쓰도록 하자.
물론 제네릭에 기본형(int, long, double, float, char 등)을 사용할수 없기 떄문에 반드시 기본형을 사용해야할 경우는 예외적일수 있으나 왠만하면 박스형 기본형인 Integer, Long, Double, Float등으로 대체할수 있다면 대체하도록 하자.

Posted by 동적할당
: