我有一个arraylist(名为a)的arraylists(名为b)。 b是字符的arraylist。当我尝试通过
从b获取单个字符时a.get(0).get(0);
它给我一个错误,说我给它一个对象,而不是一个角色。
答案 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