【发布时间】:2018-07-15 02:56:11
【问题描述】:
在 Sonarcube 中,将以下代码转换为 Lambda 时出现错误,但遇到困难。
private MeterFilter getDefualtConfig() {
return new MeterFilter() {
@Override
public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) {
return DistributionStatisticConfig.builder().percentilesHistogram(true).percentiles(0.95, 0.99, .5)
.build().merge(config);
}
};
}
【问题讨论】:
-
好的。你的问题是什么?你试过什么?你面临什么困难?你读过关于 lambdas 的教程和文档吗?
-
@JBNizet,我正在尝试返回 (Meter.Id id, DistributionStatisticConfig config) -> DistributionStatisticConfig.builder().percentilesHistogram(true).percentiles(0.95, 0.99, .5).build() .合并(配置);并且获取该接口的错误目标必须是功能接口
-
MeterFilter 是如何定义的?是接口还是类?如果是类,那么 SonarKube 就有一个 bug:不能使用 lambda 定义类的实例。如果它是一个接口,你的代码应该可以编译。
-
它是一个接口,但是当我查看它的代码时,所有方法都是静态和默认的,但没有抽象方法
-
那么你不能使用 lambda 来覆盖它。您只能使用 lamda 实现功能接口,即定义一个且仅一个抽象方法的接口。