코틀린 심화4 - 확장 함수
확장 함수
코틀린에서는 확장 함수
기능을 사용하여 기존 클래스에 새로운 함수를 자유롭게 추가할 수 있다.
다만 확장함수는 코틀린 버전이 올라가면 동일한 함수가 추가될 수 있기 때문에 주의해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
fun String.first(): Char {
return this[0]
}
fun String.addFirst(char: Char): String {
return char + this.substring(0)
}
fun main() {
println("ABC".first()) // A
println("ABC".addFirst('Z')) // ZABC
}
위와 같이 String
클래스에 .first()
와 .addFirst()
확장함수를 외부에서 추가하여 사용 가능하다.
확장 함수의 사용
확장 함수는 주로 오브젝트에서 공통으로 사용하는 기능을 추가하거나 오버로딩하여 사용해야하는 경우에 사용된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyClass {
fun printMessage() = println("Hello")
}
// 외부에서 printMessage 오버로딩 확장함수 추가
fun MyClass.printMessage(message: String) = println(message)
// 외부에서 null 체크 공통 확장함수 추가
fun MyClass?.printNullOrNotNull() {
if (this == null) println("null")
else println("not null")
}
fun main() {
MyClass().printMessage() // 멤버 함수 출력 -> Hello
MyClass().printMessage("Goodbye") // 오버로딩 확장 함수 출력 -> Goodbye
var myClass: MyClass? = null
MyClass.printNullOrNotNull() // null
myClass = MyClass()
MyClass.printNullOrNotNull() // not null
}
This post is licensed under CC BY 4.0 by the author.