본문 바로가기
개발/JAVA

자료형 - 7. 제네릭스

by 경주초이 2020. 6. 2.

제네릭스(Generics)는 자바 J2SE 5.0 이후에 도입된 개념이다.

ArrayList<String> aList = new ArrayList<String>();

사용한 첫번째 코드의 <String> 이라는 제네릭스 표현식은 "ArrayList 안에 담을 수 있는 자료형은 String 타입 뿐이다" 라는 것을 의미한다.
여기서는 제네릭스의 타입으로 String 자료형만을 예로 들었지만 <Integer>, <Animal>, <Dog> 등 어떤 자료형도 사용할 수 있다.

 

제네릭스를 사용하지 않은 경우

ArrayList aList = new ArrayList();
aList.add("hello");
aList.add("java");

String hello = (String) aList.get(0);
String java = (String) aList.get(1);

위처럼 제네릭스를 사용하지 않을 경우에는 ArrayList 안에 추가되는 객체는 Object 자료형으로 인식된다. Object 자료형은 모든 객체가 상속하고 있는 가장 기본적인 자료형이다. 따라서 ArrayList 객체인 aList에 값을 넣을 때는 문제가 안되지만 값을 가져올 경우에는 항상 Object 자료형에서 String 자료형으로 다음과 같이 형변환(casting)을 해 주어야만 한다.

String hello = (String) aList.get(0); // Object 를 String 으로 캐스팅한다. (String)

 

위 코드를 제네릭스를 이용하여 변경하면 다음과 같이 된다.

ArrayList<String> aList = new ArrayList<String>();
aList.add("hello");
aList.add("java");

String hello = aList.get(0);
String java = aList.get(1);

제네릭스로 자료형을 선언하기만 하면 그 이후로는 자료형에 대한 형변환 과정이 필요없다. 이미 컴파일러가 aList 에는 반드시 String 자료형만 추가 되어야 함을 알기 때문이다. 이렇게 제네릭스를 이용하면 형변환에 의한 불필요한 코딩, 잘못된 형변환에 의한 런타임 오류등에서 벗어날 수 있게 된다.

'개발 > JAVA' 카테고리의 다른 글

[JAVA] 제어문 - for each  (0) 2020.06.06
자료형 - 8. 맵  (0) 2020.06.04
자료형 - 6. 리스트  (0) 2020.06.02
자료형 - 5. 배열  (0) 2020.06.02
자료형 - 4. StringBuffer  (0) 2020.06.02