Я ищу правильную сигнатуру метода, который принимает функцию func и аргумент arg , копирует их по сети на удаленный компьютер и возвращает результат.В настоящее время подпись выглядит следующим образом:
def invokeRemote[A,B](address: String, func: A => B, arg: A): B
Проблема заключается в том, что метод генерирует исключение NotSerializable, если аргументы не являются Serializable или одним из примитивных типов Java.
Я пришелс помощью следующего решения, чтобы перехватить эту ошибку во время компиляции ...
type Func = (A => B) with Serializable
def invokeRemote[A <: Serializable, B <: Serializable](address: String, func: Func, arg: A): B
... но теперь больше невозможно передавать аргументы типа AnyVal подобно Int, Float или Double , которые явно не реализуют Serializable .
Как должна выглядеть подпись метода, чтобы он принимал толькоСериализуемые объекты или объекты типа AnyVal в качестве аргумента?