技术干货Java

【Java必修课】Java双大括号{}的初始化

2019-10-09  本文已影响0人  南瓜慢说

我们创建并初始化一个对象,往往有多种方法,多少人知道{}也是一种?这种方法独特,是不是一个良好的特性呢?

普通初始化

通常我们会这样创建对象并初始化,如下创建一个List:

List<String> list = new ArrayList<>();
list.add("Linux");
list.add("Windows");
list.add("Mac");
assertTrue(list.contains("Linux"));

主要分为两步:

双大括号法

利用这种方法,我们可以把创建和初始化写在一起:

list = new ArrayList<String>() {
    {
        add("Linux");
        add("Windows");
        add("Mac");
    }
};
assertTrue(list.contains("Mac"));

好处与坏处

好处:

坏处:

正是因为有这么多坏处,我们将这种方法视为anti-pattern。

那我们可以有哪些更好的选择来创建和初始化呢?

其它更好的选择

list = Stream.of("Linux", "Windows", "Mac")
        .collect(Collectors.toList());
assertTrue(list.contains("Windows"));
List<String> list = List.of("Linux", "Wiondows", "Mac");
Set<String> set = Set.of("Linux", "Wiondows", "Mac");

总结

这种双括号{}初始化的方法,还是不要用了。

上一篇 下一篇

猜你喜欢

热点阅读