SwitchBootstraps — switch 선택 부트스트랩 클래스
SwitchBootstraps — switch 선택 부트스트랩 클래스
SwitchBootstraps는 switch 문의 선택 기능을 구현하는 invokedynamic 호출 사이트를 연결하기 위한 부트스트랩 메서드(bootstrap method)를 제공해요. 부트스트랩은 switch의 case 레이블에 해당하는 추가 정적 인자를 받으며, 암묵적으로 0부터 N까지 순차적으로 번호가 매겨져요.
본문
public static CallSite typeSwitch(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels) throws Throwable — 타입 기반 switch 패턴 매칭(switch의 타입 패턴)을 구현하는 CallSite를 만들어요. 주어진 레이블 목록에 따라 실행 시간에 대상 객체의 타입을 비교해 해당 case로 분기해요. switch (obj) { case String s -> ... } 같은 타입 패턴 스위치를 지원해요.
public static CallSite enumSwitch(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels) throws Throwable — 열거형(enum) switch를 구현하는 CallSite를 만들어요. 주어진 열거형 값 레이블에 따라 대상 열거형 값을 비교해 해당 case로 분기해요.
이 부트스트랩들은 switch의 선택 동작을 구현하는 호출 사이트를 연결할 때 자바 컴파일러가 생성한 invokedynamic 명령에 사용돼요.