哪个是在构建器对象中创建空集的最佳方法

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

类具有一组String对象,定义为其实例变量。

步骤1:我有一个为该类创建对象的方法,为实例变量分配一组空的String,然后返回该对象。

接收它的方法,将它传递给另一个方法,该方法将更多的String添加到该空集。

现在我该如何在Step-1中创建空集?

一个。使用Collections.<String>emptyList()创建一个不可变的字符串集,这在第二个方法中稍后添加新字符串时不会出错。需要关于如何发生这种情况的基本原则的一些细节。

new HashSet<>()这创建了一个可变的地图。

哪种方法正确,为什么?还有另一种好方法吗?

java collections immutable-collections immutables-library
1个回答
4
投票

从您的问题中听起来好像您是通过构建器生成实例,然后有人尝试修改生成的实例。

不要这样写;建设者实际上应该总是返回不变量。如果在构建过程中没有元素添加到集合中,那么它是Set.of()(或者,在JDK9之前的API中,Collections.emptySet())。当你试图添加它们时会抛出这些,这就是重点。

如果你的目的是创建一个可变对象,通过builder或no,那么显然需要一些可变集。可能是HashSet,但请注意HashSet对于构建者来说通常是一个坏主意;一般的期望是维持秩序,所以你需要LinkedHashSet,或者,最好是像番石榴的ImmutableSet更优化的东西。

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