Ответ зависит от того, что именно вы спрашиваете ...
Если вызывается код Scala, который ожидает A => B
, то он десахрируется до Function1[A,B]
, который уже является типом SAM, поэтому дальнейшая работа не требуется, когда Java наконец получает замыкания.
(по крайней мере, мы отвлекаемся от Duke Nukem Forever, который впервые появился на наших мониторах ...)
Если Scala вызывает код Java, для которого требуется тип SAM, то один из методов - обеспечить неявное преобразование из функции Scala в ожидаемый интерфейс (как предлагает парадигма). Также весьма вероятно, что будущая версия Scala будет обрабатывать это автоматически (как указано в retronym)
Также стоит упомянуть специализацию Scala, которая может давать функции с несколькими перегруженными версиями. Насколько мне известно, Java не будет предоставлять ничего подобного, поэтому взаимодействие, вероятно, должно осуществляться одним из типов AbstractFunctionN
.