Можно ли отключить проверку "Необязательно используется в качестве поля или типа параметра" в 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 Спасибо