invokedynamic
invokedynamic의 내부 동작
invokedynamic의 내부 동작
2022.05.22이 게시글은 자바 8을 기준으로 작성되었습니다. Invokedynamic 아래의 코드를 떠올려봅시다. 람다의 타입은 무엇일까요? 람다는 int, double 같은 기본 타입이 아니므로 참조 타입, 즉 객체의 참조여야 합니다. 다시 말해서, Runnable을 구현하는 클래스의 인스턴스에 대한 참조여야 합니다. package com.company; public class InvokeDynamicExample { public static void main(String [] args) { Runnable r = () -> System.out.println("Hello"); r.run(); } } 이를 javap로 뜯어보면 아래와 같은 바이트코드를 살펴볼 수 있습니다. 여기서는 명령 5~6에서 스택에 푸시된 람다..