Java双重花括号初始化(Double Brace Initialization)的效率:值得使用吗?
大家好!我是一名Java初学者,最近遇到了一种有趣的语法——双重花括号初始化(Double Brace Initialization)。它看起来非常简洁,尤其是在需要快速创建并填充集合时。
以下是我经常在教程示例中看到的代码:
```java
Map map = new HashMap<>() {{
put("key1", "value1");
put("key2", "value2");
put("key3", "value3");
}};
```
一方面,这非常方便——无需创建单独的代码块、声明变量,然后通过 `put()` 填充。所有操作都在一个表达式中完成。但我一直纠结一个问题:这到底有多高效?因为这里创建了一个匿名内部类,这会带来额外的开销。
我在Stack Overflow上读到,这种方法可能对性能有害,甚至在大项目中导致内存泄漏。但那里有很多相互矛盾的评论。有人说这是“语法糖”