我正在使用 deequ 编写分析器。我的编辑正在向我显示此警告,但我不确定如何修复此警告。
网上这个:
Analyzer analyzer = new PatternMatch("email", Patterns.EMAIL(), option);
我在 IntelliJ 中收到此警告。
Raw use of parameterized class 'Analyzer'
我收到建议更改Analyzer
为Analyzer<NumMatchesAndCount, DoubleMetric>
. 当我这样做时,此警告已解决,但是,在这样做时,我在以下行中收到错误:
AnalysisRunBuilder analysisBuilder = AnalysisRunner.onData(table);
analysisBuilder.addAnalyzer(analyzer);
我得到的错误:
Required type: Analyzer<?,Metric<?>>
Provided: Analyzer<NumMatchesAndCount, DoubleMetric>
还DoubleMetric
实现了 Metric 接口 ( public class DoubleMetric implements Metric, Product, Serializable
),所以我认为我们不应该得到上述错误。我对吗?
addAnalyzer
上一行中的函数签名是:
public AnalysisRunBuilder addAnalyzer(Analyzer analyzer) {
this.analyzers_$eq((Seq)this.analyzers().$colon$plus(analyzer, .MODULE$.canBuildFrom()));
return this;
}
我的疑问是,当函数的签名不期望参数化类Analyzer
时,为什么我会收到预期类型为的警告Analyzer<?,Metric<?>>
?
我的目标是找出如何准确使用addAnalyzer
上述功能?在这个函数中,我想传递一个PatternMatch
类的实例。该类实现如下:PatternMatch
扩展抽象类StandardScanShareableAnalyzer
,该抽象类实现接口ScanShareableAnalyzer
,该接口又扩展Analyzer
类。