【发布时间】:2021-08-24 07:18:02
【问题描述】:
我正在使用 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类。
【问题讨论】:
-
您使用的是哪个编辑器?您是否也尝试过从命令行编译?
-
@TimMoore 我正在使用 IntelliJ 想法。我尝试运行 mvn clean install,它成功构建了一个 jar 文件,但在编译时显示了类似的警告
-
感谢您的快速回复。我在下面发布了一个答案,但我将使用 IntelliJ IDEA 的特定信息对其进行更新。
标签: java java-8 amazon-deequ