728x90
Kotlin 코드
fun String.first(): Char {
return this[0]
}
fun String.addFirst(char: Char): String {
return char + this.substring(0)
}
fun main() {
println("ABCD".first())
println("ABCD".addFirst('Z')) //원래 있던 함수처럼 사용 가능하다
}
JAVA 코드
public class ExtensionExample {
public static void main(String[] args) {
/*
"ABCD".first();
"ABCD".addFirst('Z'); //컴파일 오류 발생
*/
char first = MyExtensionsKt.first("ABCD");
System.out.println(first);
String addFirst = MyExtensionsKt.addFirst("ABCD", 'Z');
System.out.println(addFirst);
}
}
디컴파일 코드

- 코틀린에서는 확장 함수를 사용하면, 해당 클래스에 존재했던 함수처럼 사용할 수가 있다.
- 디컴파일을 하게 되면, 해당 코틀린 코드가 첫 번째 파라미터로 자기 자신을 받는 것을 확인할 수 있다
- 자바에서 코틀린의 확장함수를 사용하기 위해서는 디컴파일 되었던 거처럼 첫 번째 파라미터로 확장 대상 클래스(자기 자신)를 넣어주어야 한다.
- 현재 코드에서 코틀린에서는 기존의 String 클래스에 존재하는 인스턴스 함수처럼 사용하지만, 자바에선 static 메서드로 호출해야 한다.
728x90
'실무 프로젝트로 배우는 Kotlin & Spring > JAVA 프로젝트에 코틀린 도입하기' 카테고리의 다른 글
| JAVA 기반 스프링 프로젝트에 코틀린 적용 (0) | 2022.11.05 |
|---|---|
| 코틀린과 롬복 (0) | 2022.11.05 |
| JvmStatic을 이용해 정적 함수 호출하기 (0) | 2022.10.23 |
| Kotlin의 예외처리와 JAVA 예약어 접근 방법 (0) | 2022.10.23 |
| Getter, Setter 호출하기 (0) | 2022.10.23 |