加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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");
}});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读