Java为什么允许var <T>?

时间:2020-05-06 13:34:00

标签: java eclipse

让我们看一下这些声明:

ArrayList<String> list = new ArrayList<String>() {{add("hi");}};
System.out.println(list.get(0));

var list = new ArrayList<String>() {{add("hi");}};
System.out.println(list.get(0));

由于类型推断,两者相同。但是我也很震惊地看到它们也可以编译:

var<String> list = new ArrayList<String>() {{add("hi");}};
System.out.println(list.get(0));

var<Integer> list = new ArrayList<String>() {{add("hi");}};
System.out.println(list.get(0));

所有上述方法都会生成相同的字节码。我原以为var<T>会失败,但不会失败。我在JLS和JVMS中进行了搜索,但未发现与此行为相关的任何信息。

为什么Java认为var<T>有效?向后兼容吗?

编辑:查看评论。

0 个答案:

没有答案
相关问题