角色的Arraylist在访问时不知不觉地变成了对象

时间:2014-02-04 01:36:45

标签: java arraylist

小心:没有经验的编码员......

我有一个arraylist(名为a)的arraylists(名为b)。 b是字符的arraylist。当我尝试通过

从b获取单个字符时
a.get(0).get(0);

它给我一个错误,说我给它一个对象,而不是一个角色。

2 个答案:

答案 0 :(得分:2)

由于第二个get正在返回Object,因此第一个get似乎正确地返回ArrayList(或List}。最可能的解释是,您有一个部分通用的,部分原始的ArrayList,可能是ArrayList<ArrayList>类型。泛型类型参数ArrayList本身就是一种原始类型,这意味着它会在调用Object时返回get。另一种可能性是你有一个ArrayList<ArrayList<Object>>

完全指定泛型类型,将泛型嵌套到标量类型。

ArrayList<ArrayList<Character>> a;

答案 1 :(得分:1)

这是generics的性质。如果您未使用

在案例中指定a列表中的元素类型
List<List<Character>> a;

但您将使用原始类型

List a;

编译器只能假设您正在存储Objects,因此get()的结果也将被假定为Object,其中没有任何get()

a.get(0).get(0)
       //^-this method can't be invoked from reference of Object type