请说一下不建议使用双括号语法来初始化集合的原因?

List<String> list = new ArrayList<String>() {{
    add("Hello");
    add("World");
}};

因为,在Java 中,双括号初始化会产生匿名内部类,而非静态匿名内部类又会隐式强引用外部类,如果两个类的实例对象的生命周期不一致,从而会导致外部类无法被及时
回收,如果同时产生大量匿名内部类,就可能会造成内存泄露。

发表评论

后才能评论