Нарушение требований SonarQube Java 8 - PullRequest
0 голосов
/ 20 ноября 2018

Я определил функциональный интерфейс с одним объявлением метода и реализацию метода в классе другого проекта.Нарушение 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>"

Вызов GET службы REST просто принимает входные данные и возвращает XYZProfile.Как правило, структура проекта требует использования интерфейсов, но для устранения нарушений сонара я должен удалить «интерфейс» и изменить вызов метода makeRESTServiceGetCall на синтаксис бифункциональности?

1 Ответ

0 голосов
/ 20 ноября 2018

Нарушение предполагает, что уже существует функциональный интерфейс, который может решить цель того, что вы пытаетесь реализовать, используя свой пользовательский интерфейс, т.е. 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);
...