그러한 오버로드는 모호함을 불러오며 호출자가 람다를 특정 타입으로 변환하거나 람다 매개변수 타입을 명시적으로 지정할 것을 요구합니다. 모호함을 제거하기 위해 오버로드된 메서드에 다른 이름을 부여하는 것이 좋습니다.
예:
interface MyExecutor {
void execute(Supplier<?> supplier);
void execute(Callable<?> callable);
}
여기서 Supplier 및 Callable는 매개변수를 취하지 않고 void가 아닌 값을 반환하는 단일 추상 메서드를 포함하는 함수형 인터페이스입니다.
그 결과, 명시적인 형 변환이 사용되지 않는 한 람다의 타입을 호출 지점에서 추측할 수 없습니다.