만약 자바에서 제공하는 기본 String 클래스에 내가 원하는 커스텀 기능을 추가하고 싶다면 어떻게 해야 할까요? 자바에서는 보통 StringUtils 같은 잡동사니 클래스를 만들어 정적(Static) 메서드로 우회해야 했습니다.
코틀린에서는 확장 함수(Extension Functions)를 통해, 이미 남이 만들어둔 클래스(원본 소스코드)를 전혀 건드리지 않고도 마치 내가 직접 멤버 함수를 하나 더 만든 것처럼 감쪽같이 기능을 갖다 붙일 수 있습니다.
공장에서 출시된 멀티툴(기본 클래스)을 뜯어서 분해하지 않아도 됩니다. String.나만의함수() 라는 문법의 '마법의 접착제'를 바르면, 그 멀티툴 끝에 나만의 도구를 철컥 하고 붙여서 다른 기본 기능들처럼 자유롭게 뽑아 쓸 수 있습니다.
| 방식 | 호출 코드 예시 | 특징 |
|---|---|---|
| Java (Utility Class) | StringUtils.removeFirstLast(myText) |
인자로 객체를 넘겨야 해서 직관적이지 않고, 수많은 Utils 파일이 양산됨. |
| Kotlin (Extension) | myText.removeFirstLast() |
마치 원래 있던 멤버 함수인 것처럼 매우 자연스럽게 체이닝 호출 가능. |