Java双括号初始化总是有效吗?
2022-09-03 12:14:28
我知道这个代码:
Set<String> set = new HashSet<String>() {{
add("test1");
add("test2");
}};
真的是:
Set<String> set = new HashSet<String>() {
{//initializer
add("test1");
add("test2");
}
};
初始值设定项块在构造函数块之前执行。在上面的示例中,add(“test1”) 在执行构造函数之前被调用。构造函数可能正在初始化许多实例字段,以便此类可以正常工作。我想知道为什么在构造函数之前调用.add()会起作用?是否有任何情况会导致问题?