Avatar ·

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上读到,这种方法可能对性能有害,甚至在大项目中导致内存泄漏。但那里有很多相互矛盾的评论。有人说这是“语法糖”