Soy buscar la firma derecha de un método que toma una función func y un argumento arg , los copia en la red a un ordenador remoto y devuelve el resultado. Actualmente la firma tiene el siguiente aspecto:Serializable y AnyVal
def invokeRemote[A,B](address: String, func: A => B, arg: A): B
El problema con esto es que el método produce una excepción NotSerializable si los argumentos no son Serializable o uno de los tipos primitivos de Java.
me ocurrió con la solución siguiente para encontrar este error en tiempo de compilación ...
type Func = (A => B) with Serializable
def invokeRemote[A <: Serializable, B <: Serializable](address: String, func: Func, arg: A): B
... pero ahora ya no es posible pasar argumentos de tipo AnyVal como Int , Flotante o Doble que no implemente explícitamente Serializable.
¿Cómo debería ser la firma del método de modo que acepte solo objetos serializables u objetos de tipo AnyVal como argumento?
Guau, gracias por esta muy buena solución.Es increíble ver de qué es capaz el compilador de Scala :) – gruenewa