我不想disable the warning altogether,我已经知道why you supposedly shouldn't use Optional
as a parameter。但是,我不认为这与我的案件有关。
为了便于说明,我的代码如下所示:
//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并获得一个带有一堆字段的数据传输对象,其中任何一个字段都可以为null,所以任何集合都包含在一个额外的类中,即使这样获得一个空列表也是一个有效的例子。所以,我最终得到了一个像这样的详细代码来转换单个值。我将它放入一个单独的辅助方法中,以避免在一个地方出现所有冗长的问题。
但是IntelliJ抱怨我传递的是Optional
参数。这是我通常会同意的东西,但我不认为这是一个问题,如果它是一个私有方法,我用来保存另一个方法太长时间 - 我可能需要从数据传输中获取多个值宾语。
Optional
的公共方法或保存Optional
的字段,但我想禁用私有方法的检查。@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
,因为它很快就会烦人。我可以在接受一些外国DTO的各种类中使用这些方法中的多个。Optional
参数,只是将它包装在方法中。特别是因为在某些情况下我只有一个Optional
,所以我必须打开它然后用myMethod(data.orElse(null))
之类的东西换回来,然后在方法中做Optiona.ofNullable(parameter)
。总而言之,即使它不是跨系统或跨层传输数据等,总是把它视为一个问题似乎是一个无理的限制。
那么,我是否可以通过私有方法的设置禁用它,但没有别的?
目前,没有选项可以禁用私有方法的检查。请关注/评论在YouTrack为您的功能请求创建的问题:https://youtrack.jetbrains.com/issue/IDEA-207468谢谢