簡體   English   中英

是否可以在 IntelliJ 中為私有方法禁用“可選用作字段或參數類型”檢查?

[英]Is it possible to disable "Optional used as field or parameter type" inspection in IntelliJ for private methods?

我不想完全禁用警告,我已經知道為什么你不應該使用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 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM