簡體   English   中英

有沒有辦法使用 IntelliJ 重構 Set 初始化以使用 Set.of()?

[英]Is there a way to refactor a Set initialization to use Set.of() using IntelliJ?

有沒有辦法在 IntelliJ(甚至使用 Eclipse)中重構它,將第一個腳本轉換為第二個腳本:

在 Java 9 之前設置初始化:

Set<String> values = new HashSet<>();
values.add("a");
values.add("b");

從 Java 9 開始設置初始化(創建一個不可變的集合):

Set<String> values = Set.of("a", "b");

重構選項可能並非在所有情況下都可用(源集應該是不可修改的)。

然而,IntelliJ 的檢查可能更適合檢測這種情況。

請參閱Java > Java 語言級別遷移輔助工具 > Java 9不可變集合創建可以替換為集合工廠調用

此檢查有助於將 Java 9 之前創建的不可修改集合轉換為新的集合工廠方法,如List.ofSet.of 此外,從 Java 10 List.copyOf ,可以建議轉換為List.copyOf等。

請注意,Java 9 集合工廠方法不接受空值。 還需要設置元素和映射鍵不同。 並非總是可以靜態檢查原始元素是否不同且不為空。 使用復選框,您可以強制檢查僅在原始元素是編譯時常量時發出警告,因此可以保證轉換是正確的。

此檢查僅從 Java 9 開始可用。
2017.2 新增

可以使用以下代碼測試此檢查:

Set<String> stringSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));

暫無
暫無

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

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