是否可以在IntelliJ中为私有方法禁用“可选用作字段或参数类型”检查?

问题描述 投票:2回答:1

我不想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的字段,但我想禁用私有方法的检查。
  • 我宁愿不用annotate each method with @SuppressWarnings("OptionalUsedAsFieldOrParameterType"),因为它很快就会烦人。我可以在接受一些外国DTO的各种类中使用这些方法中的多个。
  • 同样,我也不想传入非Optional参数,只是将它包装在方法中。特别是因为在某些情况下我只有一个Optional,所以我必须打开它然后用myMethod(data.orElse(null))之类的东西换回来,然后在方法中做Optiona.ofNullable(parameter)

总而言之,即使它不是跨系统或跨层传输数据等,总是把它视为一个问题似乎是一个无理的限制。

那么,我是否可以通过私有方法的设置禁用它,但没有别的?

java intellij-idea intellij-inspections
1个回答
1
投票

目前,没有选项可以禁用私有方法的检查。请关注/评论在YouTrack为您的功能请求创建的问题:https://youtrack.jetbrains.com/issue/IDEA-207468谢谢

© www.soinside.com 2019 - 2024. All rights reserved.