SonarQube违反Java 8双功能要求

时间:2018-11-20 13:57:34

标签: java spring-boot java-8 sonarqube functional-interface

我用一个方法声明定义了一个功能接口,并在另一个项目的类中实现了该方法。 SonarQube的违反之处在于我正在重新定义Java 8中已经提供的标准功能接口。

@FunctionalInterface
/*access modifier*/ interface XYZService {
   XYZProfile makeRESTServiceGetCall(String str, Integer id);
}

"Drop this interface in favor of "java.util.function.BiFunction<String,Integer,XYZProfile>"Drop this interface in favor of "java.util.function.BiFunction<String,Integer,XYZProfile>"

REST服务的GET调用仅获取输入并返回XYZProfile。通常,项目结构需要使用接口,但是要解决违反声纳的行为,我应该删除“接口”,并将makeRESTServiceGetCall方法调用更改为双功能语法吗?

1 个答案:

答案 0 :(得分:0)

违规表明已经存在一个功能接口,可以解决您尝试使用自定义接口(即BiFunction<T,U,R>)实现的目的。

因此,在定义makeRESTServiceGetCall的方法XYZService的地方,您可以在代码中简单地创建一个BiFunction,如下所示:

BiFunction<String, Integer, XYZProfile> xyzProfileBiFunction = (string, integer) -> {
    return xyzProfile; // the GET call implementation using 'string' &'integer'      
};

,然后在您调用方法makeRESTServiceGetCall的地方,只需将apply的上述实现简化为:

XYZProfile xyzProfileNullPointer = xyzProfileBiFunction.apply("nullpointer", 0);
XYZProfile xyzProfileParth = xyzProfileBiFunction.apply("Parth", 1);