inline vs. normal


fun main() {
    printWithInline()
    printWithoutInline()
}

inline fun printWithInline(){
    println("print With Inline")
}

fun printWithoutInline(){
    println("print Without Inline")
}

→ 이 코드는 자바로 이렇게 디컴파일 됨


public static final void main() {
   String var1 = "print With Inline";
   System.out.println(var1);
   printWithoutInline();
}

public static final void printWithInline() {
   String var1 = "print With Inline";
   System.out.println(var1);
}

public static final void printWithoutInline() {
   String var0 = "print Without Inline";
   System.out.println(var0);
}

<aside> 💡 inline 함수는 호출 위치에 바로 때려박힌다

</aside>


박싱 / 언박싱


fun main() {
    println(IntBoxing(11).value)
}

class IntBoxing(val value: Int)

→ 위 코드는 다음과 같은 자바코드로 디컴파일됨


public static final void main() {
   int var0 = (new IntBoxing(11)).getValue();
   System.out.println(var0);
}

<aside> 💡 Kotlin 의 Int 가 Java 의 int 로 디컴파일 되지 않아 성능 손실 발생

</aside>


특징