[英]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.of
或Set.of
。 此外,從 Java 10List.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.