首页 > 解决方案 > 在 Java 泛型中使用 <>

问题描述

为什么 Java 接受下面的代码行,而 <> 只出现在右边?<> 标志没有这样的(泛型功能)目的吗?

List balloons = new ArrayList<>();

到目前为止,我只了解右侧 <> 的用法,如下例所示。这里Java推断左边的类型,所以右边不需要再指定,直接使用<>即可。

    List<String> balloons = new ArrayList<>();
    balloons.add("blue");
    balloons.add("yellow");
    // balloons.add(1); // will not compile as balloons is type safe, demanding String input
    System.out.println(balloons.get(0));
    System.out.println(balloons.get(1));
    // System.out.println(balloons.get(2));

标签: javagenericsdiamond-operator

解决方案


列表定义为

List balloons = new ArrayList<>();

原始类型,这意味着您可以在此列表中存储任何内容。

这个

List balloons = new ArrayList<>();

类似于

List<Object> balloons = new ArrayList<>();

注意:重要的是要注意ListList<Object>相似但它们之间存在差异请参阅:List 和 List<Object> 之间的 Java 区别


推荐阅读