首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java中的"new (){}“与"new ()”

Java中的"new (){}“与"new ()”
EN

Stack Overflow用户
提问于 2013-09-02 18:08:06
回答 7查看 1.2K关注 0票数 14

例如:

代码语言:javascript
运行
复制
Object o1 = new ArrayList<String>();
Object o2 = new ArrayList<String>(){};
Object o3 = new ArrayList<String>(){{}};

有什么关系呢?

我不能搜索出Java的第2/3语法,有什么参考吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-09-02 18:11:08

第一个创建了一个ArrayList

第二个创建ArrayList的匿名子类,该子类具有特定的泛型字符串类型。

第三个是相同的,但它有一个初始化块,它是空的。

注意:在任何可能的情况下,您都应该编写最简单、最清晰的代码,尤其是在考虑性能时。

票数 25
EN

Stack Overflow用户

发布于 2013-09-02 18:09:42

代码语言:javascript
运行
复制
Object o1 = new ArrayList<String>();

创建一个ArrayList。

代码语言:javascript
运行
复制
Object o2 = new ArrayList<String>(){};

在这里,您将创建一个匿名类,它扩展了ArrayList<String>,并且不覆盖任何内容。因此,区别在于,您是在没有过度行为的情况下对ArrayList进行子类化,如果您没有很好的理由使用,就不会这样做。

代码语言:javascript
运行
复制
Object o3 = new ArrayList<String>(){{}};

您正在创建与2相同的内容,但使用的是一个空的初始化器块。

票数 13
EN

Stack Overflow用户

发布于 2013-09-02 18:13:51

代码语言:javascript
运行
复制
Object o1 = new ArrayList<String>();

创建一个新的ArrayList对象并将其分配给o1

代码语言:javascript
运行
复制
Object o2 = new ArrayList<String>(){};

创建扩展ArrayList的匿名类的新实例并将其分配给o2

代码语言:javascript
运行
复制
Object o3 = new ArrayList<String>(){{}};

创建一个(不同于o2)匿名类的新实例,该类扩展了具有非op实例初始化器的ArrayList。

在功能上,分配给o2o3的anon类是等价的,但在技术上它们将是不同的类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18578721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档