静态初始化器由类加载器调用一次,这正是我想要的,但是在静态代码块之外进行初始化更具可读性(可辩论)。两者有什么不同?初始化变量与其声明或静态初始化之间有区别吗?
private static final Map<MyEnum, Cheese> cheeseCache;
static {
parserCache = new EnumMap< MyEnum, String>(MyEnum.class){{
for(MyEnum myEnum: MyEnum.values()){
put(myEnum, new Cheese(myEnum)) ;
}
}};
}
或本:
private static final Map<Lab, LabResultParser> cheeseCache
= new EnumMap< MyEnum, String>(MyEnum.class){{
for(MyEnum myEnum: MyEnum.values()){
put(myEnum, new Cheese(myEnum)) ;
}
}};
只是好奇,第二个编译?变量声明中的for循环? –
@JunedAhsan是它在一个anoymous子类(双大括号initalziation) – NimChimpsky
使用javap来拆卸这两个,看看它们有何不同。 –