请说一下不建议使用双括号语法来初始化集合的原因?
List<String> list = new ArrayList<String>() {{
add("Hello");
add("World");
}};
因为,在Java 中,双括号初始化会产生匿名内部类,而非静态匿名内部类又会隐式强引用外部类,如果两个类的实例对象的生命周期不一致,从而会导致外部类无法被及时
回收,如果同时产生大量匿名内部类,就可能会造成内存泄露。
List<String> list = new ArrayList<String>() {{
add("Hello");
add("World");
}};
因为,在Java 中,双括号初始化会产生匿名内部类,而非静态匿名内部类又会隐式强引用外部类,如果两个类的实例对象的生命周期不一致,从而会导致外部类无法被及时
回收,如果同时产生大量匿名内部类,就可能会造成内存泄露。