Можно ли отключить проверку «Необязательно используется в качестве поля или типа параметра» в IntelliJ для частных методов? - PullRequest
0 голосов
/ 18 февраля 2019

Я не хочу вообще отключить предупреждение , и я уже знаю , почему вы предположительно не должны использовать Optional в качестве параметра .Тем не менее, я не думаю, что это относится к моему делу.

В целях иллюстрации у меня есть код, который выглядит следующим образом:

//IntelliJ reports: 'Optional<ForeignDataTransferObject>' used as type for parameter 'data'
private LocalSystemPerson extractPerson(Optional<ForeignDataTransferObject> data) {
    return data
            .map(data -> data.getPeopleListWrapper())
            .map(peopleListWrapper -> peopleListWrapper.getList())
            .map(listOfForeignPeople -> listOfForeignPeople.stream())
            .orElseGet(Stream::empty)
            .findFirst()
            .map(foreignPerson -> convertToLocalSystemPerson(foreignPerson))
            .orElse(someFallbackValue);
}

Получается список людей, а затем первыйзатем преобразовать его.Так как я вызываю внешний API и получаю объект передачи данных с кучей полей, каждое из которых может быть пустым, любые коллекции заключаются в дополнительный класс, и даже тогда получение пустого списка является допустимым случаем.Итак, я получаю подробный код для преобразования одного значения.Я спрятал его в отдельный вспомогательный метод, чтобы избежать всего этого многословия в одном месте.

Однако IntelliJ жалуется, что я передаю параметр Optional.Это то, с чем я обычно согласен, но я не вижу в этом проблемы, если это частный метод, который я использую, чтобы избавить другой метод от слишком длинных - мне может понадобиться извлечь более одного значения из передачи данныхобъект.

  • Я все еще хочу избегать создания открытых методов, которые принимают Optional или полей, которые содержат Optional, но я хочу отключить проверку для частных методов.
  • Я бы предпочел не аннотировать каждый метод с помощью @SuppressWarnings("OptionalUsedAsFieldOrParameterType"), поскольку он быстро становится раздражающим.У меня может быть несколько таких методов в различных классах, которые принимают некоторые сторонние DTO.
  • Аналогично, я также не хочу передавать параметр, отличный от Optional, только чтобы обернуть его внутри метода.Тем более, что в некоторых случаях у меня уже есть только Optional, поэтому мне придется развернуть его, затем обернуть обратно чем-нибудь вроде myMethod(data.orElse(null)), а затем сделать Optiona.ofNullable(parameter) в методе.

В целом, кажется неразумным ограничением всегда рассматривать эту проблему как проблему, даже если она не будет передавать данные между системами или между слоями и т. Д.

Итак, можно ли вообще отключить это изнастройки только для приватных методов, но больше ничего?

1 Ответ

0 голосов
/ 18 февраля 2019

На текущий момент нет возможности отключить проверку для частных методов.Пожалуйста, проследите / прокомментируйте проблему, созданную для запроса функции на YouTrack: https://youtrack.jetbrains.com/issue/IDEA-207468 Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...