为什么依赖于java泛型类的Scala类在spark中出现NoSuchMethodError失败? 注意:为了避免不必要的混淆,我简化了下面的代码
我在下面有一个scala特征过滤器:为什么依赖于java泛型类的Scala类在spark中出现NoSuchMethodError失败? 注意:为了避免不必要的混淆,我简化了下面的代码,java,scala,apache-spark,generics,traits,Java,Scala,Apache Spark,Generics,Traits,我在下面有一个scala特征过滤器: trait Filter[T] extends Serializable { def evaluate(input: T): Boolean } 我在类中使用它来过滤特殊类型的RDD: class OtherThing(filter: Filter[String], tokens: RDD[String]){ tokens.filter(t => {filter.evaluate(t)}) } 这是可行的,但是,只要我用java接口
trait Filter[T] extends Serializable {
def evaluate(input: T): Boolean
}
我在类中使用它来过滤特殊类型的RDD:
class OtherThing(filter: Filter[String], tokens: RDD[String]){
tokens.filter(t => {filter.evaluate(t)})
}
这是可行的,但是,只要我用java接口替换scala特性,就会得到NoSuchMethodError。我的java界面看起来像:
public interface Filter<T> extends Serializable {
scala.Boolean evaluate(T input);
}
公共接口筛选器扩展了可序列化{
布尔求值(T输入);
}
并且错误抱怨没有方法过滤对象。错误消息如下所示:
原因:java.lang.NoSuchMethodError:my.package.Filter.evaluate(Ljava/lang/Object;)Z