개발관련/자바2009. 2. 27. 17:48
jdk 1.4 이하에서는 Collection 자료 구조를 사용할 경우 값을 넣을 경우 Object타입으로 들어가서
후에 빼서 사용할 때 (String)과 같이 캐스팅을 해야하는 불편함이 있다. jdk1.5(java 5) 이후부터는 이러한 불편함을
해소할 수 있는 기능이 추가되었다. generics라고 하는 것이다.

예를 들어 ArrayList를 사용할 때 다음과 같이 사용한다.

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

<String>이라고 parameter를 주면 ArrayList에 들어가는 값은 String 타입이라고 정의해주는 것이다.

이렇게 해서 얻어지는 이점은 일단 값에 대한 타입이 명시적으로 드러나므로 명확한다.

또한 캐스팅이 안되는 값이 들어갈 경우 이전에는 컴파일 단계에서 잡아내지 못하고 실행단계에서 Exception이 나서
잘못 된 것을 알 수 있었는데, 이제는 컴파일 단계에서도 잡아내 주기 때문에 디버깅하기가 수월해졌다.

덧붙여 하나 더 얘기하면, java5 이상에서 Collection의 경우 for문을 간결하게 사용할 수 있게 되었다.

예를 들면,

ArrayList<String> list = new ArrayList<String>(); 와 같이 변수를 선언하고 값을 넣은 후 값을 빼내기 위해서
우리는 for 문을 사용한다.

for(Iterator i = list.iterator(); i.hasNext();) {
  String s = i.next();
  System.out.println(s);
}

아래와 같이 하면 좀 더 간결해진다.

for(String s:list) {
  System.out.println(s);
}

풀이를 하자면, list의 개수만큼 루프를 돌면서 값을 빼서 s에 넣으라는 것이다. 여기서 s는 String으로 선언했다.
list에 들어간 값이 앞에서 <String>으로 했기 때문이다. 그렇지 않다면 Object로 해야 할 것이다.






'개발관련 > 자바' 카테고리의 다른 글

[펌]템플릿 형태 JSP  (0) 2010.01.06
[펌][JAVA] static키워드 바로알기  (0) 2009.12.18
[펌]GlassFish와 Tomcat 비교  (0) 2009.06.12
eclipse DB plugin - DBViewer  (1) 2009.02.27
[펌]Statement vs. PreparedStatement  (0) 2009.02.27
Posted by 자개비