{{ ... }}块在以下代码中的含义是什么?
class X {
private Y var1;
private X() {
Z context = new Z(new SystemThreadPool()) {{
var1 = new Y();
}};
}
}
Run Code Online (Sandbox Code Playgroud) 我对实时初始化块应该运行的时间感到困惑.根据凯西塞拉的书:
每次创建类实例时都会运行实例初始化块
因此,根据这个问题和java的文档,考虑有两个类:父母和孩子:
实例化子类对象只创建子类类型的1个对象,但调用其所有超类的构造函数.
根据以上所述: 为什么每次实例化子类的对象时都会调用位于超类中的实例初始化块?它不像是超实例的新对象被实例化.
在通常声明/定义实例变量的Java类中,我想将a ArrayList作为实例变量之一,并使用一些元素作为开始对其进行初始化。一种实现方法是声明ArrayList并在构造函数中对其进行初始化。但是,我想知道为什么在构造函数外部初始化值是非法的。例如,
public class Test {
// some instance variables...
private ArrayList<String> list = new ArrayList<String>();
list.add("asdf");
// methods here...
}
Run Code Online (Sandbox Code Playgroud)
所以我知道这是非法的。但是为什么这是非法的呢?