我下面有一个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接口替换了scala特性,就会收到NoSuchMethodError。我的Java界面如下:
public interface Filter<T> extends Serializable {
scala.Boolean evaluate(T input);
}
该错误抱怨没有过滤对象的方法。错误消息看起来像这样:
原因:java.lang.NoSuchMethodError:my.package.Filter.evaluate(Ljava / lang / Object;)Z