首页 > 解决方案 > 当列表类型不同时,Java 列表数组工作

问题描述

我有以下代码工作,但我不确定它为什么不抛出异常:

List[] x=new ArrayList[2];
x[0]=new ArrayList<Integer>();
x[1]=new ArrayList<String>();
x[0].add("test");
x[1].add(5);
System.out.println(x[0]);
System.out.println(x[1]);

这打印:

[test]
[5]

x[0]是整数数组,它添加字符串没有任何问题。x[1]是字符串数组,它添加整数没有任何问题。

这是如何运作的?

标签: javaarraysarraylist

解决方案


首先,这与数组无关。以下展示了相同的行为:

List x = new ArrayList();
x = new ArrayList<Integer>();
x.add("test");
System.out.println(x);

其行为方式的关键原因x是声明为具有原始 List类型。有关全面的讨论,请参阅什么是原始类型以及我们为什么不应该使用它?


推荐阅读