본문 바로가기
JAVA

Hashtable의 keys() 와 elements() 메소드의 차이점.

by eqzero 2008. 1. 7.
오늘도 삽질로 시간을 낭비한듯하네..ㅜ_ㅡ

아래와 같은 구문이 있다.
Hashtable param = new Hashtable();
Object chkValue = null;

 Enumeration keys = param.keys();
 while(keys.hasMoreElements()){
  chkValue = keys.nextElement();
  
  if(chkValue instanceof String){
   System.out.println("문자형");
  } else if (chkValue instanceof ArrayList){
   System.out.println("배열");
 }

위와 같이 했을 경우 if문의 조건절은 무조건 String형만 타게된다..이유는 keys()는 말대로 hashtable의 키값만을 리턴한다.
param.set("title", "abcs");
햇을경우 title을 리턴하게 된다. 고로 chkValue는 String만 존재할뿐이다.
하지만 Enumeration keys = param.elements(); 를 해주게되면 hashtable의 밸류값을 가져온게된다.
"abcs"값을 가져온다는 말이다.

이 차이점을 구분을 못해서 그냥 keys()로 받는 Object가 hashtable의 value값은 배열인데 자꾸 String으로 타는게 아닌가..ㅜ_ㅡ..
기초가 부족하다고 다시한번 느끼게 해준다...
api만 조금 쉽게 이해했더라면 삽질 안해도 됏을텐데..끄응..

댓글1

  • 바보창수 2008.06.21 00:00

    공부 좀 혀 압둘라. 자바 5.0이상을 사용하면 제너릭을 사용해서 그런 실수를 방지하고 안전하게 사용할 수 있다.Map<String, Object> params = new Hashtable<String, Object>();Set<String> keySet = params.keySet();for ( String key : keySet ) { Object value = params.get(key);// 중략}
    답글