我用一个方法声明定义了一个功能接口,并在另一个项目的类中实现了该方法。 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
方法调用更改为双功能语法吗?
答案 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);