카테고리 없음

★Collection메소드 HashMap (+ 객체 타입 확인법)

열하나요 2023. 10. 30. 01:48

HashMap은 키(K), 밸류(V)로 구성되어있다.

만약 밸류가 객체로 되어있다면 다음과 같이 키값으로 객체를 뽑을 수 있다.

int memberNo = 10;
PageInfo pi = new PageInfo(listCount, currentPage, pageLimit, boardLimit, maxPage, startPage, endPage);

HashMap<String, Object> map = new HashMap();
map.put("memberNo", memberNo);	// 5
map.put("pi", new); 
// PageInfo [listCount=4, currentPage=1, pageLimit=5, boardLimit=10, maxPage=5, startPage=1, endPage=5]

제네릭을 별도로 명시하지 않았다면 기본 타입이 Object이다.

int형 memberNo는 자동으로 wrapper클래스 Integer로 변환되어 Object로 들어갔다.

Object는 최상위 클래스이기 때문에 어떠한 클래스도 받을 수 있다(다형성 적용)

 

제네릭은 HashMap<String, PageInfo>로 설정하였다면 객체의 필드값을 바로 뽑을 수 있다.

하지만 Object로 하였기 때문에 다운캐스팅 후 객체의 필드값을 뽑을 수 있다(getter이용)

((PageInfo)map.get("pi")).getListCount();

참고로 아래는 불가능하다. (부모클래스는 자식클래스 메소드를 사용할 수 없다)

map.get("pi").getListCount();

 

- 객체의 타입을 알 수 있는 방법

1. instancof 연산자 이용 => 반환 true/false

map.get("pi") instanceof Object		// true
map.get("pi") instanceof PageInfo	// true

 

2. getClass().getName() => 반환 클래스 경로

map.get("pi").getClass().getName()
// com.kh.semi.common.vo.PageInfo

 

3. getClass().getSimpleName() => 반환 클래스 식별자

map.get("pi").getClass().getSimpleName()
// PageInfo