【发布时间】:2017-04-16 14:55:28
【问题描述】:
我有一个 Java 方法,它有一个接口类型 SerializablePredicate 的参数。
@FunctionalInterface
interface SerializablePredicate<T> extends Predicate<T>, Serializable {}
我需要做什么才能序列化 Scala lambda,例如
(x:String) => println(x)
使其与 Java 方法兼容。
目前我正在尝试转换 lambda
class SomeClass[T](val p:(T=>Boolean)) extends SomeJavaClass[T](p.asInstanceOf[SerializablePredicate[T]]) {}
这是我得到的堆栈跟踪...
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)
【问题讨论】:
标签: java scala serialization scala-java-interop