마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

HashMap 사용하며 나오는 경고 문구 질문있습니다.

0 추천

 

Unchecked assignment: 'java.util.HashMap' to 'java.util.Map<? extends java.lang.String,?>

문구가 사라지질 않습니다.

 

userProfile = (HashMap)getIntent().getSerializableExtra("userInfo");

넘겨 받은 userProfile을 사용하려고합니다.

해당 변수에 직접 put(?,?) 자료를 넣으려하니 

Unchecked assignment: 'java.util.HashMap' to 'java.util.Map<? extends java.lang.String,?>

 

문구가 뜨더라고요.

구글링해봐도 명확하게 초기화하고 사용하라는게 대부분인거 같기도 하고요.

HashMap<String,Object> userProfile_Update = new HashMap<String,Object>();
userProfile_Update.putAll(userProfile);

이렇게 선언해서 새로운 HashMap에다 넣어보려 하는데도 userProfile 은 여전히 경고 문구가 나오고 있습니다.

 

다 무시하고 작동시키면 기능은 잘 구현됩니다만

저 경고 문구는 제가 옳바르게 사용하고 있지 못하다는 생각이 들어 질문 올려봅니다.

 

nickeun (540 포인트) 님이 2018년 4월 23일 질문

1개의 답변

0 추천
userProfile = (HashMap<String, Object>)getIntent().getSerializableExtra("userInfo");

로 하면 해당 Unchecked warning은 사라지겠지만, 그 다음엔

"Serializable to HashMap<String, Object>" Unchecked cast warning이 나타날 겁니다.

Java에서는 Serializable object에 실제 담겨져있는 Object type을 유추할 방법이 없기 때문에

소스 리뷰 상으로만 type mismatch 가능성을 한번 더 확인하고

'@SuppressWarnings("unchecked")' annotation으로 처리하는 것이 맞는 방법으로 알고 있습니다.

디자이너정 (42,810 포인트) 님이 2018년 4월 24일 답변
명확한 이유 알려주셔서 정말 감사합니다..
Serializable object의 성격을 알게됐네요.
매번 큰 도움 주셔서 큰 힘이 되고있습니다. 오늘도 좋은 하루 되세요 ^^
...