首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于Java7 7的钻石,需要澄清。

关于Java7 7的钻石,需要澄清。
EN

Stack Overflow用户
提问于 2012-10-12 15:36:40
回答 1查看 104关注 0票数 4

可能重复: Double brace initialisation (anonymous inner class) with diamond operator

使用Java 7,为什么会出现以下问题

代码语言:javascript
运行
复制
final List<String> a = new ArrayList<>() {
    {
        add("word");
    }
};

需要显式类型声明,如

代码语言:javascript
运行
复制
final List<String> a = new ArrayList<String>() {
    {
        add("word");
    }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-12 15:44:24

一般来说,IMHO避免了类型推断。

无论如何,只有当编译器不需要知道使用了哪种泛型类型时,<>才能工作。在匿名类的情况下,需要提供实际的类型,因为编译器没有推断类型。

<>有效地关闭了类型检查,而不是提供类型推断。匿名类存储实际的泛型类型,因此您必须提供它。

代码语言:javascript
运行
复制
List<String> a = new ArrayList<>()

就像

代码语言:javascript
运行
复制
@SuppressWarnings("unchecked")
List<String> a = new ArrayList()

但是对于匿名子类,编译器需要给它一个泛型类型。

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

https://stackoverflow.com/questions/12862507

复制
相关文章

相似问题

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