我有一個Java方法,它有一個接口類型SerializablePredicate的參數。如何序列化Scala lambda與Java方法進行互操作?
@FunctionalInterface
interface SerializablePredicate<T> extends Predicate<T>, Serializable {}
我需要什麼,以序列化Scala的拉姆達如
(x:String) => println(x)
這樣,這將是與Java兼容的方法做。
目前,我試圖投的拉姆達
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)
我不確定你的意思是「在上面的代碼中:(t:T)=> p.apply(t),爲類SomeJavaClass創建一個新的SerializablePredicate Java FunctionalInterface實例」,你能提供一個請舉例嗎? –
newlogic