안드로이드 개발 팁 #82 - Map 클래스에서 데이터를 읽는 확장 함수 read

Map 클래스에서 데이터를 읽는 확장 함수 read

No. 81
2024. 08. 10 (토) | Written by @dorian-mobileapp

시작하며...

Map 클래스에서 데이터를 읽는 메소드 get(key), getOrDefault(key, default)가 있지만, 이들의 리턴 타입은 Any입니다. 그것을 원하는 타입으로 변경해야 하는데, 코드가 길어져 가독성이 떨어지는 문제가 있습니다. 이를 해결하고자 read(key, default)라는 이름의 확장 함수를 만들어 보았습니다.


Map 클래스에서 데이터를 읽는 확장 함수 read

파라메터는 getOrDefault 메소드와 동일합니다. 차이점은 리턴 타입이 Any가 아닌 T라는 점이죠. 코드는 아래와 같습니다.

inline fun <reified T> Map<String, Any>.read(key: String, defaultValue: T): T {
    val value = this.getOrDefault(key, defaultValue)

    return when {
        (value is T) -> value
        else -> defaultValue
    }
}

그런데 제네릭 타입 T를 그냥 쓰면 'Cannot check for instance of erased type: T'라는 빌드 오류가 발생합니다. 이를 해결하기 위해 reified라는 키워드를 추가하고, inline 키워드도 확장함수에 추가됩니다. 이에 대한 의미는 별도 포스트에 정리하겠습니다.


지난 안드로이드 개발 팁


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECblog app (https://blog.etain.club)
Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
image.png
please click it!
image.png
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)

The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.079
BTC 62672.39
ETH 1651.10
USDT 1.00
SBD 0.42