例如:
Object o1 = new ArrayList<String>();
Object o2 = new ArrayList<String>(){};
Object o3 = new ArrayList<String>(){{}};有什么关系呢?
我不能搜索出Java的第2/3语法,有什么参考吗?
发布于 2013-09-02 18:11:08
第一个创建了一个ArrayList
第二个创建ArrayList的匿名子类,该子类具有特定的泛型字符串类型。
第三个是相同的,但它有一个初始化块,它是空的。
注意:在任何可能的情况下,您都应该编写最简单、最清晰的代码,尤其是在考虑性能时。
发布于 2013-09-02 18:09:42
Object o1 = new ArrayList<String>();创建一个ArrayList。
Object o2 = new ArrayList<String>(){};在这里,您将创建一个匿名类,它扩展了ArrayList<String>,并且不覆盖任何内容。因此,区别在于,您是在没有过度行为的情况下对ArrayList进行子类化,如果您没有很好的理由使用,就不会这样做。
Object o3 = new ArrayList<String>(){{}};您正在创建与2相同的内容,但使用的是一个空的初始化器块。
发布于 2013-09-02 18:13:51
Object o1 = new ArrayList<String>();创建一个新的ArrayList对象并将其分配给o1
Object o2 = new ArrayList<String>(){};创建扩展ArrayList的匿名类的新实例并将其分配给o2
Object o3 = new ArrayList<String>(){{}};创建一个(不同于o2)匿名类的新实例,该类扩展了具有非op实例初始化器的ArrayList。
在功能上,分配给o2和o3的anon类是等价的,但在技术上它们将是不同的类。
https://stackoverflow.com/questions/18578721
复制相似问题