繁体   English   中英

Map.of() 返回什么类实例?

[英]What class instance does Map.of() return?

我目前正在学习集合,我注意到工厂方法 Map.of 返回一个 Map<> 类型的对象。 但是,由于 Map 只是一个接口,Map 类引用实际上指向什么类?

不能保证返回任何特定类的实例,因此您的代码不应依赖于此。 但是,为了学习起见,OpenJDK 11 返回了ImmutableCollections.Map1一个实例,它是专门为Map.of重载编写的几个轻量级专用类Map.of

根据地图大小,它不会相同,您不应该依赖根据@chrylis -cautiouslyoptimistic- 的答案返回的值。

如果您对您的代码仅使用 print map.getClass()的任何Map实例的值感兴趣,以下是一些示例:

System.out.println(Map.of().getClass());
System.out.println(Map.of(1,2).getClass());
System.out.println(Map.of(1,2,3,4,5,6).getClass());

其中(在 JDK17 中)打印:

class java.util.ImmutableCollections$MapN
class java.util.ImmutableCollections$Map1
class java.util.ImmutableCollections$MapN

它从 ImmutableCollections 类返回一个不可变映射。 此类不是公共 API 的一部分,但它扩展了 AbstractMap,后者提供 Map 所需的所有基本方法的实现。

重要的一点是 Map.of() 返回的 Map 是不可变的,因此您无法在创建后添加或更改它。 不可变集合更安全、线程安全且效率更高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM