0
点赞
收藏
分享

微信扫一扫

为什么不建议使用双括号初始化?

南柯Taylor 2021-09-28 阅读 60
Blog

原文地址:https://alphahinex.github.io/2020/07/12/why-does-not-suggest-to-use-double-brace-initialization/


description: "Double Brace Initialization in Java"
date: 2020.07.12 19:26
categories:
- Java
tags: [Java]
keywords: Java, HashMap, Map, Java Collections, Double Brace Initialization


什么是双括号初始化?

Map<String, Object> map = new HashMap<String, Object>() {{
    put("name", "Alpha");
    put("age", 8);
}};

为什么能这样写?

以下内容引自 The Java™ Tutorials - Initializing Fields

为什么不建议使用?

参考资料

总结一下

  • 不支持钻石操作符,即不可以这样写:Map<String, Object> map = new HashMap<>() { { } };
  • 因为相当于是通过内部类实现的,每次使用这种写法都会新创建一个内部类,如:MainClass$InnerClass.class
  • 存在性能问题,可能会导致内存溢出。

难道只能从了?

虽然双括号初始化看上去还算美,但却不建议使用。
Java 8、9 也提供了一些其他的初始化方式,还有各种三方类库也提供了很多其他方式(详见上节中的参考资料)。

什么?还不满意?

忍一时风平浪静,退一步海阔天空。

有能耐你别用 Java 啊!

比如 Groovy 了解一下:

Map emptyMap = [:]
Map map = [name: 'Alpha', age: 8]
举报

相关推荐

0 条评论