Java中的双括号初始化语法({{ ... }})是什么?

推荐答案

双大括号初始化创建一个从指定类(outer个大括号)派生的匿名类,并在该类(inner个大括号)内提供一个初始化器块.例如

new ArrayList<Integer>() {{
   add(1);
   add(2);
}};

请注意,使用这种双花括号初始化的效果是创建了匿名内部类.创建的类具有指向周围外部类的隐式this指针.虽然通常不是问题,但在某些情况下,例如在序列化或垃圾收集时,它可能会导致痛苦,这一点值得注意.

Java相关问答推荐

从头开始使用Jgit初始化InMemoryRepository

一般类型和kotlin阴影Java函数的问题

如何在SystemiccationRetryListenerSupport中获得类级别的spring retryable annotation中指定的标签?

CAMEL 4中的SAXParseException

Java FX中的河内之塔游戏-在游戏完全解决之前什么都不会显示

如何才能使我的程序不会要求两次输入?

Spring @Value default无法计算表达式

try 判断可选参数是否为空时出现空类型安全警告

Spring Security不允许加载js

在Eclipse中数组的可空性

将Spring Boot 3.2.0升级到3.2.1后查询执行错误

与IntArray相比,ArrayList<;Int>;对于大量元素的性能极差

EXCEL中的公式单元格显示#NAME?

如何在盒子的顶部和底部创建两张不同图片(大小相同)的盒子?

Java List有一个在一个位置添加多个元素的方法,但我找不到一个在一个位置删除多个元素的方法

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

无法在Java中获取ElastiCache的AWS CloudWatch指标

当我将鼠标悬停在javafxTextArea上时,如何更改鼠标光标?

java 11上出现DateTimeParseException,但java 8上没有

将Optionals/null安全添加到嵌套的flatMap/流