“ JDK 11 Early-Access发行说明 ”表明JDK 11的Early Access Build 20在Collection接口上包括一个新的默认方法 ,该方法 “允许将集合的元素转移到所需运行时类型的新创建的数组中”。 这个新的默认方法 [ Collection.toArray(IntFunction) ]与Stream接口[ Stream.toArray(IntFunction) ]上已经可用的同名方法类似。
下一个代码清单演示了这个新的JDK 11默认Collection
方法的实际作用(在本例中为Set
)。
final Set<String> names = Set.of("Fred", "Wilma", "Barney", "Betty");
out.println(Arrays.toString(names.toArray(String[]::new)));
因为我使用的(无序的) 设置的,顺序String
生成的阵列以s可以比的顺序不同String
小号被用于初始化指定Set
。 在下一个屏幕快照中对此进行了演示(该快照还表明本示例使用的是JDK 11 Early Access Build 23 )。
我们中的许多人比数组更频繁地使用Java集合,但是有时候我们需要将这些集合转换为数组。 默认方法Collection.toArray(IntFunction)
提供了一种非常方便的机制。 Collecton
[ Collection.toArray(T []) ]上已经存在类似的方法,并且这两个方法的存在意味着不再可以将null
传递给Collection.toArray(-)
方法(编译器无法区分它们和将报告错误消息“对toArray的引用不明确”)。 付出的代价不大,因为在将null
传递给它们时,两个方法都将抛出NullPointerException 。
翻译自: https://www.javacodegeeks.com/2018/07/jdk-11-new-default-collection-method.html