java – 使用初始化块有什么好处?
发布时间:2020-12-15 04:56:20 所属栏目:Java 来源:网络整理
导读:我知道初始化块在首次加载类(静态初始化块)或创建实例(实例初始化块)时运行. class SmallInit { static int x; int y; static { x = 7 ; } // static init block { y = 8; } // instance init block} 但是,当我们这样做的时候,这有什么特别的好处: class Sm
|
我知道初始化块在首次加载类(静态初始化块)或创建实例(实例初始化块)时运行.
class SmallInit {
static int x;
int y;
static { x = 7 ; } // static init block
{ y = 8; } // instance init block
}
但是,当我们这样做的时候,这有什么特别的好处: class SmallInit {
static int x = 7;
int y = 8;
}
解决方法
实例初始化块的一个好处是它们使
Double Brace Initialization模式成为可能.
而不是这个: Set<String> names = new HashSet<String>();
names.add("Peter");
names.add("Paul");
names.add("Mary");
你可以这样做: Set<String> names = new HashSet<String>() {{
add("Peter");
add("Paul");
add("Mary");
}};
第一个括号创建一个匿名内部类;第二个启动实例初始化程序块. (请注意,这意味着名称是HashSet的匿名子类的实例,但这通常不是问题.这也意味着此模式仅适用于非最终类.) 这在一次性情况下特别有用,在这种情况下将对象初始化为表达式会很方便.例如: doSomethingToSet(new HashSet<String>() {{
add("Peter");
add("Paul");
add("Mary");
}});
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
