Java 中的 “new Foo(){}” vs. “new Foo()”
例如:
Object o1 = new ArrayList<String>();
Object o2 = new ArrayList<String>(){};
Object o3 = new ArrayList<String>(){{}};
有什么区别?
我无法谷歌出Java的第2/3语法,任何参考?
例如:
Object o1 = new ArrayList<String>();
Object o2 = new ArrayList<String>(){};
Object o3 = new ArrayList<String>(){{}};
有什么区别?
我无法谷歌出Java的第2/3语法,任何参考?
第一个创建数组列表
第二个创建ArrayList的匿名子类,该子类具有特定的字符串泛型类型
第三个是相同的,但它有一个空的初始值设定项块。
注意:在可能的情况下,您应该编写最简单,最清晰的代码,特别是如果您正在考虑性能。
Object o1 = new ArrayList<String>();
创建数组列表。
Object o2 = new ArrayList<String>(){};
在这里,您将创建一个匿名类,该类可以扩展并且不重写任何内容。所以不同之处在于,你正在子类化一个ArrayList而没有过度的行为,如果你没有充分的理由,永远不要这样做。ArrayList<String>
Object o3 = new ArrayList<String>(){{}};
您正在创建与 2 相同但具有空初始化程序块的。