728x90
확장함수란, 마치 클래스에 정의된 함수인 것처럼 새로운 기능을 추가하는 기능입니다.
함수를 최상위 수준 또는 다른 클래스의 밖에 위치시킴으로써 함수들을 다른 패키지에서도 import를 통해 사용할 수 있도록 할 수 있습니다.
예제를 먼저 확인해보겠습니다.
fun String?.isJsonObject():Boolean {
return this?.startsWith("{") == true && this.endsWith("}")
// 위와 같으면 true 아니면 false
}
fun String?.isJsonArray():Boolean {
return this?.startsWith("[") == true && this.endsWith("]")
}
when {
message.isJsonObject() -> {
...
}
message.isJsonArray() -> {
...
}
}
위 확장함수에 대한 설명 전에 예제 코드가 먼저 보이지만 설명이 없어도 이해가 어렵진 않습니다. 즉, 아래와 같은 룰에 따라 확장 함수를 만들 수 있게 되는데, 위 코드에선 확장할 클래스(수신 객체 타입)가 String인 this(수신 객체)에 startsWith(), endsWith()를 통해 문자열이 JsonObject인지 JsonArray인지 형태를 확인하는 함수를 만들었다는 것을 알 수 있습니다.
fun 확장할 클래스.함수명: 리턴타입 {
return 리턴값
}
'Android' 카테고리의 다른 글
FCM (Firebase Cloud Messaging) (0) | 2021.04.03 |
---|---|
Kakao Map API (카카오 지도 API) (0) | 2021.03.29 |
StateBar (상태바) : 색상 변경 (0) | 2021.03.28 |
Retrofit2, OkHttp를 함께 사용하는 이유와 예제 (0) | 2021.03.21 |
Retrofit2 예제 (feat. HTTP, REST API, OkHttp) (0) | 2021.03.21 |