Можно ли отключить проверку "Необязательно используется в качестве поля или типа параметра" в IntelliJ для частных методов?

Я не хочу отключать предупреждение вообще, и я уже знаю, почему якобы вы не должны использовать 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 ответ

Решение

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

Другие вопросы по тегам