Java中的ArrayList是一个动态数组,它可以存储任意类型的对象。当我们使用ArrayList时,有时候我们希望从列表中获取特定类型的对象,但是ArrayList的get()方法返回的是Object类型,而不是我们所需的类型。
这是因为ArrayList是一个泛型类,它可以通过指定类型参数来限制存储在列表中的对象类型。例如,我们可以创建一个ArrayList来存储整数类型的对象:ArrayList<Integer> list = new ArrayList<Integer>();。这样,我们可以确保从列表中获取的对象是整数类型。
然而,如果我们没有指定类型参数,或者使用了原始的ArrayList类型(没有指定类型参数),那么get()方法将返回Object类型。这是因为ArrayList在没有指定类型参数时,默认将存储Object类型的对象。
为了解决这个问题,我们可以使用类型转换将返回的Object对象转换为所需的类型。例如,如果我们知道列表中存储的是字符串对象,我们可以使用强制类型转换将返回的Object对象转换为字符串类型:
ArrayList list = new ArrayList();
list.add("Hello");
String str = (String) list.get(0);
然而,这种类型转换是不安全的,如果我们错误地将一个对象转换为错误的类型,将会导致运行时异常。为了避免这种情况,我们可以在创建ArrayList时指定类型参数,以确保只能存储特定类型的对象,并且不需要进行类型转换。
总结一下,ArrayList返回Object而不是所需的类型是因为没有指定类型参数或使用了原始的ArrayList类型。为了解决这个问题,我们可以使用类型转换将返回的Object对象转换为所需的类型,或者在创建ArrayList时指定类型参数以避免类型转换。
领取专属 10元无门槛券
手把手带您无忧上云