lambda的匿名内部类

lambda的匿名内部类,lambda,java-8,Lambda,Java 8,在Sonarcube中,我在将以下代码转换为Lambda时遇到错误,但面临困难 private MeterFilter getDefualtConfig() { return new MeterFilter() { @Override public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) {

在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);
            }
        };
    }

lambda等效值为:

return (id, config) -> DistributionStatisticConfig.builder()
                               .percentilesHistogram(true)
                               .percentiles(0.95, 0.99, .5)
                               .build()
                               .merge(config); 

好啊你的问题是什么?你试过什么?你面临什么困难?你读过关于lambdas的教程和文档吗?@jbniset,我正在尝试return(Meter.Id Id,DistributionStatisticConfig)->DistributionStatisticConfig.builder().percentilesHistogram(true).percentiles(0.95,0.99,5).build().merge(config);获取此接口的错误目标必须是功能接口MeterFilter是如何定义的?它是一个接口还是一个类?如果它是一个类,那么SonarKube有一个bug:不能使用lambda定义类的实例。如果它是一个接口,你的代码应该编译。它是一个接口,但当我查看它的代码时,它是所有的方法都是静态的和默认的,但是没有抽象方法,那么你不能使用lambda来重写它。您只能使用lamda实现功能接口,即定义一个且仅定义一个抽象方法的接口。正确,类似于我尝试这样做的方式,但出现错误。此接口的目标必须是功能性的interface@RavatTailor如果
MeterFilter
是一个功能接口,即与SAM的接口,则只能将上述代码转换为lambda。如果
MeterFilter
确实是一个功能接口,但仍然会出现错误,即您可以将代码转换为lambda然后很可能是一个bug Sonarcube。嘿,谢谢你的回答,Metafilter不是SAM接口,你是对的,它看起来像是声纳问题