J'ai une méthode Java qui possède un paramètre de type interface SerializablePredicate.Comment sérialiser Scala lambda pour interop avec la méthode Java?
@FunctionalInterface
interface SerializablePredicate<T> extends Predicate<T>, Serializable {}
Que dois-je faire pour sérialiser un lambda Scala, comme
(x:String) => println(x)
tel qu'il sera compatible avec la méthode Java.
Actuellement je tente de lancer le lambda
class SomeClass[T](val p:(T=>Boolean)) extends SomeJavaClass[T](p.asInstanceOf[SerializablePredicate[T]]) {}
Et ceci est la trace de la pile que je reçois ...
Exception in thread "main" java.lang.ClassCastException: Main$$anonfun$1 cannot be cast to io.cognitionbox.core.SerializablePredicate
at P.<init>(LogicJavaToScalaInterp.scala:11)
at Main$.delayedEndpoint$Main$1(Main.scala:9)
at Main$delayedInit$body.apply(Main.scala:3)
at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
at scala.App$class.main(App.scala:76)
at Main$.main(Main.scala:3)
at Main.main(Main.scala)
Je ne suis pas sûr de ce que vous entendez par "Dans le code ci-dessus: (t: T) => p.apply (t), Créer une nouvelle instance Java FunctionalInterface SerializablePredicate pour la classe SomeJavaClass", pourriez-vous fournir un exemple s'il vous plaît? –
newlogic