是否可以在 IntelliJ 中禁用私有方法的 "Optional used as field or parameter type" 检查?
Is it possible to disable "Optional used as field or parameter type" inspection in IntelliJ for private methods?
我不想 and I already know 。但是,我认为这与我的情况无关。
为了便于说明,我的代码如下所示:
//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 并获得一个包含一堆字段的数据传输对象,其中任何一个都可以为空,因此任何集合都包含在一个额外的 class 中,甚至得到一个空列表是一个有效的案例。所以,我最终得到了这样一个冗长的代码来转换单个值。我将它隐藏到一个单独的辅助方法中,以避免在一个地方出现所有冗长的内容。
但是 IntelliJ 抱怨我正在传递 Optional
参数。这是我通常会同意的事情,但如果它是我用来避免另一种方法变得太长的私有方法,我不认为这是一个问题 - 我可能需要从数据传输中获取多个值目的。
- 我仍然想避免创建接受
Optional
的 public 方法或包含 Optional
的字段,但我想禁用对私有方法的检查。
- 我宁愿不必 annotate each method with
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
因为它很快就会变得烦人。我可以在接受一些外国 DTO 的各种 classes 中使用这些方法中的多个。
- 同样,我也不想传入一个非
Optional
参数只是为了将它包装在方法中。特别是因为在某些情况下我已经只有一个 Optional
,所以我必须打开它然后用 myMethod(data.orElse(null))
之类的东西把它包装回去,然后在方法中执行 Optiona.ofNullable(parameter)
。
总而言之,即使它不会跨系统或跨层等传输数据,但始终将其视为问题似乎是一个不合理的限制。
那么,我可以从设置中仅针对私有方法禁用它吗?
目前没有禁用私有方法检查的选项。请 follow/comment 为您在 YouTrack 的功能请求创建的问题:
https://youtrack.jetbrains.com/issue/IDEA-207468
谢谢
我不想
为了便于说明,我的代码如下所示:
//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 并获得一个包含一堆字段的数据传输对象,其中任何一个都可以为空,因此任何集合都包含在一个额外的 class 中,甚至得到一个空列表是一个有效的案例。所以,我最终得到了这样一个冗长的代码来转换单个值。我将它隐藏到一个单独的辅助方法中,以避免在一个地方出现所有冗长的内容。
但是 IntelliJ 抱怨我正在传递 Optional
参数。这是我通常会同意的事情,但如果它是我用来避免另一种方法变得太长的私有方法,我不认为这是一个问题 - 我可能需要从数据传输中获取多个值目的。
- 我仍然想避免创建接受
Optional
的 public 方法或包含Optional
的字段,但我想禁用对私有方法的检查。 - 我宁愿不必 annotate each method with
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
因为它很快就会变得烦人。我可以在接受一些外国 DTO 的各种 classes 中使用这些方法中的多个。 - 同样,我也不想传入一个非
Optional
参数只是为了将它包装在方法中。特别是因为在某些情况下我已经只有一个Optional
,所以我必须打开它然后用myMethod(data.orElse(null))
之类的东西把它包装回去,然后在方法中执行Optiona.ofNullable(parameter)
。
总而言之,即使它不会跨系统或跨层等传输数据,但始终将其视为问题似乎是一个不合理的限制。
那么,我可以从设置中仅针对私有方法禁用它吗?
目前没有禁用私有方法检查的选项。请 follow/comment 为您在 YouTrack 的功能请求创建的问题: https://youtrack.jetbrains.com/issue/IDEA-207468 谢谢