以下程序打印:
my name is:null
my name is:null
Someclass static init
Run Code Online (Sandbox Code Playgroud)
首次加载类时的AFAIK静态块和字段始终首先被初始化,实例块和字段被初始化.因此变量"objectName1"和"objectName2"应首先初始化,实例变量"list"second ...但是输出明显与此理论相矛盾...任何人都可以解释程序行为(我不是在寻找对它的批评设计本身btw)?
import java.util.ArrayList;
import java.util.List;
public class Main2{
public static void main (String[] args){
SomeClass.getInstance();
}
}
class SomeClass {
private static final SomeClass instance = new SomeClass();
public static SomeClass getInstance(){
return instance;
}
static {
System.out.println ("Someclass static init");
}
private static String objectName1 ="test1";
private static String objectName2 ="test2";
@SuppressWarnings("serial")
private List<SomeObject> list=
new ArrayList<SomeObject> () { {
add (new SomeObject(objectName1));
add (new SomeObject(objectName2));
}};
} …Run Code Online (Sandbox Code Playgroud) 你好朋友在Java类中只有一个块有什么用
public class StaticExample {
{
System.out.println("I m here...");
}
}
Run Code Online (Sandbox Code Playgroud) java ×2