当前位置: 首页 > 面试题库 >

什么是Java中的Double Brace初始化?

朱越
2023-03-14
问题内容

{{ ... }}Java中的Double Brace初始化语法()是什么?


问题答案:

双括号初始化将创建一个从指定类(外部括号)派生的匿名类,并在该类(内部括号)内提供一个初始化程序块。例如

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

请注意,使用这种双重括号初始化的作用是创建匿名内部类。创建的类具有this指向周围外部类的隐式指针。尽管通常不是问题,但在某些情况下(例如序列化或垃圾收集时)可能会引起悲伤,值得一提的是。



 类似资料:
  • 问题内容: 我们可以将代码放入构造函数或方法或初始化块中。初始化块有什么用?每个Java程序都必须有它吗? 问题答案: 首先,有两种类型的初始化块: 实例初始化块,以及 静态初始化块。 此代码应说明它们的用法以及执行顺序: 印刷品: 如果要运行某些代码而不管使用哪个构造函数,或者想要对匿名类进行一些实例初始化,则实例迭代块很有用。

  • 问题内容: 所以我要声明并初始化一个int数组: 说我改为这样做… … 0将按标准输出。另外,如果我这样做: 将按标准输出。那么默认如何初始化我的数组?是否可以安全地假设默认的初始化将数组索引设置为零,这意味着我不必遍历数组并对其进行初始化? 问题答案: Java程序中未由程序员明确设置为所有内容的所有内容都初始化为零值。 对于的引用(任何包含对象的内容)。 对于int / short / byt

  • Java中的双大括号初始化语法()是什么?

  • 问题内容: 我认为该值将还原最初呈现的样式(由浏览器的内部用户代理样式表应用)。 例: 我希望规则将以串联模式显示,并且规则将使用的原始显示值显示。 但是,当我探索这一点时,会显示内联。我错了吗?谁能详细说明一下? 问题答案: 值(未属性)表示属性的初始值,如在CSS规范定义:“在‘初始’关键字表示被指定为属性的初始值的指定值”。因此,其含义取决于属性,但不取决于其他任何内容,例如,不取决于浏览器

  • 根据此堆栈溢出问题的公认(且唯一)答案, 使用 将改为零初始化对象。 那么,为什么呢?, 生成此输出: 定义的两个构造函数都是默认的?正当对于POD类型,默认初始化为零初始化。 根据这个问题的公认答案, 如果POD成员未在构造函数中初始化,也未在类初始化中通过C11初始化,则默认为已初始化。 不管是堆栈还是堆,答案都是一样的。 在C 98中(而不是之后),new int()被指定为执行零初始化。

  • 修改为的变量必须在声明或执行构造函数时初始化。 我在系统类文件中查找,发现对象是在方法中初始化的,什么时候调用这个方法?