如何修复 SonarLint:重构此代码以使用更专业的功能接口 'BinaryOperator<Float>'?
How to fix SonarLint: Refactor this code to use the more specialised Functional Interface 'BinaryOperator<Float>'?
所以我正在学习如何在 Java 中使用 Lambda 并遇到了问题,Sonar Lint 说我应该重构代码以使用更专业的功能接口。
public float durchschnitt(float zahl1, float zahl2) {
BiFunction<Float, Float, Float> function = (Float ersteZahl, Float zweiteZahl) -> (ersteZahl + zweiteZahl) / 2;
// ^
// Here I get the warning:
// SonarLint: Refactor this code to use the more specialised Functional Interface 'BinaryOperator<Float>'
return function.apply(zahl1, zahl2);
}
这个小程序应该做的就是计算两个浮点数的平均值。该程序运行良好,但我希望警告消失。那么我怎样才能避免这种警告并修复代码呢?
编辑:
我尝试在 google 等上找到解决方案,但发现 none.
BinaryOperator<T>
实际上是 BiFunction<T, T, T>
的子接口,其 documentation 声明 “这是 BiFunction 的特化,用于操作数和结果都是相同类型的,所以只需替换为:
BinaryOperator<Float> function = (Float ersteZahl, Float zweiteZahl) -> (ersteZahl + zweiteZahl) / 2;
也无需声明 Float
参数类型,它由编译器自动推断:
BinaryOperator<Float> function = (ersteZahl, zweiteZahl) -> (ersteZahl + zweiteZahl) / 2;
所以我正在学习如何在 Java 中使用 Lambda 并遇到了问题,Sonar Lint 说我应该重构代码以使用更专业的功能接口。
public float durchschnitt(float zahl1, float zahl2) {
BiFunction<Float, Float, Float> function = (Float ersteZahl, Float zweiteZahl) -> (ersteZahl + zweiteZahl) / 2;
// ^
// Here I get the warning:
// SonarLint: Refactor this code to use the more specialised Functional Interface 'BinaryOperator<Float>'
return function.apply(zahl1, zahl2);
}
这个小程序应该做的就是计算两个浮点数的平均值。该程序运行良好,但我希望警告消失。那么我怎样才能避免这种警告并修复代码呢?
编辑: 我尝试在 google 等上找到解决方案,但发现 none.
BinaryOperator<T>
实际上是 BiFunction<T, T, T>
的子接口,其 documentation 声明 “这是 BiFunction 的特化,用于操作数和结果都是相同类型的,所以只需替换为:
BinaryOperator<Float> function = (Float ersteZahl, Float zweiteZahl) -> (ersteZahl + zweiteZahl) / 2;
也无需声明 Float
参数类型,它由编译器自动推断:
BinaryOperator<Float> function = (ersteZahl, zweiteZahl) -> (ersteZahl + zweiteZahl) / 2;