java - 是否可以在 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)
在方法中执行。
总而言之,即使它不会跨系统或跨层传输数据等,总是将其视为问题似乎是一个不合理的限制。
那么,我可以从私有方法的设置中禁用它吗?
解决方案
目前没有选项可以禁用私有方法的检查。请在 YouTrack 关注/评论为您的功能请求创建的问题: https ://youtrack.jetbrains.com/issue/IDEA-207468 谢谢
推荐阅读
- php - 如何在android中制作JSON响应的toast消息?
- html - CSS scroll-snap 是如何指定的,它在 firefox 上不起作用
- jquery - 重新加载/刷新页面时菜单内的内容会闪烁
- php - 不使用会话使用 PHP 和 Ajax 登录另一个页面
- microsoft-teams - 我在哪里可以获得传递给 Microsoft Teams 的 javascript SDK 中 submitTask 函数的 appId?
- pentaho - 将表作为变量传递 - Pentaho
- sql - oracle 11g 上出现 ORA-00979 的原因是什么
- java - com.mysql.cj.exceptions.DataConversionException:无法从字符串“”确定值类型
- recursion - 如何在 OCaml 中将浮点数提高到指数?
- r - 在 R markdown 中保持添加的图像位置