πŸ’» Language/Java : μžλ°”

[E] Unchecked cast: 'java.lang.Object' to 'java.util.Map<java.lang.String,java.lang.Object>'

mxnxeonx 2025. 4. 15. 14:54
728x90
728x90

 

IntelliJμ—μ„œ μœ„ 사진과 같이 Warning 밑쀄이 κ·Έμ–΄μ Έ μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 확인해 λ³΄λ‹ˆ λ‹€μŒκ³Ό κ°™μ•˜λ‹€.

Unchecked cast: 'java.lang.Object' to 'java.util.Map<java.lang.String.java.lang.Object>'

 

이 μ—λŸ¬λŠ” Javaμ—μ„œ μ œλ„€λ¦­ νƒ€μž… μΊμŠ€νŒ…μ„ ν•  λ•Œ λ°œμƒν•˜λŠ” unchecked cast 경고둜, Java의 νƒ€μž… μ†Œκ±°(Type Erasure) λ•Œλ¬Έμ— λŸ°νƒ€μž„ μ‹œμ μ—λŠ” μ œλ„€λ¦­ νƒ€μž… 정보가 사라지기 λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” 것이라고 ν•œλ‹€.

 

 

ν•΄κ²° 방법

1. @SuppressWarnings μ‚¬μš©

κ°€μž₯ κ°„λ‹¨ν•˜μ§€λ§Œ, 경고만 λ¬΄μ‹œν•  뿐 μ‹€μ œ νƒ€μž… μ•ˆμ „μ„±μ€ 보μž₯λ˜μ§€ μ•ŠλŠ” 방법이닀. λŸ°νƒ€μž„μ— μ‹€μ œλ‘œ μΊμŠ€νŒ…μ΄ μ•ˆμ „ν•œμ§€ ν™•μ‹ ν•œλ‹€λ©΄ μ‚¬μš©ν•΄λ„ λ˜μ§€λ§Œ νƒ€μž… μ•ˆμ „μ„±μ„ 보μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” 2λ²ˆμ΄λ‚˜ 3번 방법을 μ‚¬μš©ν•˜λŠ” 게 μ’‹μŒ.

@SuppressWarnings("unchecked")
Map<String, Object> dataBody = (Map<String, Object>) responseBody.get("dataBody");
더보기

ν˜„μž¬ ν™˜κ²½μ—μ„œλŠ” responseBody.get("dataBody") instanceof Map λΆ„κΈ° 내에 νƒ€μž… μΊμŠ€νŒ…λ¬Έμ΄ μž‘μ„±λ˜μ–΄ μžˆμ–΄ μΊμŠ€νŒ…μ΄ μ•ˆμ „ν•˜λ‹€κ³  ν™•μ‹ ν•  수 μžˆμœΌλ―€λ‘œ 1λ²ˆμ„ μ±„νƒν•˜μ—¬ κ²½κ³ λ₯Ό λ¬΄μ‹œν•˜λŠ” λ°©ν–₯으둜 μ½”λ“œλ₯Ό κ°œμ„ ν•˜μ˜€λ‹€.

if (responseBody.containsKey("dataBody") && responseBody.get("dataBody") instanceof Map) {
    @SuppressWarnings("unchecked")
    Map<String, Object> dataBody = (Map<String, Object>) responseBody.get("dataBody");

 

2. νƒ€μž… 체크 ν›„ μΊμŠ€νŒ…

Object dataObj = responseBody.get("dataBody");
if (dataObj instanceof Map) {
    Map<String, Object> dataBody = (Map<String, Object>) dataObj;
    // 이후 μ½”λ“œ...
}

 

3. Collections μ‚¬μš©

Map<String, Object> dataBody = Collections.emptyMap();
Object dataObj = responseBody.get("dataBody");
if (dataObj instanceof Map) {
    for (Map.Entry<?, ?> entry : ((Map<?, ?>) dataObj).entrySet()) {
        if (entry.getKey() instanceof String) {
            dataBody.put((String) entry.getKey(), entry.getValue());
        }
    }
}
728x90
320x100