[kotlin] 확장 함수와 확장 프로퍼티의 사용법

코틀린은 기존 클래스에 새로운 기능을 추가할 수 있도록 확장 함수와 확장 프로퍼티를 제공합니다. 이 기능을 사용하면 기존 클래스의 코드를 수정하지 않고도 새로운 기능을 추가할 수 있어 유용합니다.

확장 함수

확장 함수는 기존 클래스에 새로운 함수를 추가하는 것을 가능하게 합니다. 사용법은 간단합니다. 다음은 String 클래스에 reverse라는 확장 함수를 추가하는 예제입니다.

fun String.reverse(): String {
    return this.reversed()
}

위의 코드에서 reverse 함수는 String 클래스에 추가되었으며, 이제 모든 String 인스턴스에서 reverse 함수를 호출할 수 있습니다.

val original = "hello"
val reversed = original.reverse()
println(reversed) // 출력: "olleh"

확장 프로퍼티

확장 프로퍼티는 기존 클래스에 새로운 프로퍼티를 추가하는 것을 가능하게 합니다. 다음은 String 클래스에 lengthIsEven이라는 확장 프로퍼티를 추가하는 예제입니다.

val String.lengthIsEven: Boolean
    get() = this.length % 2 == 0

위의 코드에서 lengthIsEven 프로퍼티는 String 클래스에 추가되었으며, 이제 모든 String 인스턴스에서 lengthIsEven 프로퍼티를 사용할 수 있습니다.

val result = "hello".lengthIsEven
println(result) // true

주의사항

확장 함수 및 확장 프로퍼티를 남발하면 코드의 가독성이 떨어질 수 있으므로, 신중하게 사용하는 것이 좋습니다. 또한, 확장 함수로는 private이나 protected 멤버에 접근할 수 없으며, 확장 프로퍼티로는 필드를 가질 수 없습니다.

확장 함수와 확장 프로퍼티는 기존 클래스를 확장하여 새로운 기능을 추가하는 강력한 기능이지만, 적절하게 사용하여 코드 유지보수성을 고려해야 합니다.

참고 자료