导致“不兼容的类型:java.lang.Object无法转换...”在'for'循环中

时间:2017-04-14 23:06:00

标签: java

我收到以下编译错误:

incompatible types: java.lang.Object cannot be converted to Vehicle

for声明中。造成这种情况的原因以及如何解决?

以下是我的代码的相关部分:

List vehicledetails = new ArrayList();
vehicledetails.add(new Vehicle ("123", "London", "Mercedes", "12/2/2017"));

...

for (Vehicle s : vehicledetails) {
    ...
}

1 个答案:

答案 0 :(得分:1)

在检索对象时,您的ArrayList需要输入类型的原始类型,因此有两种方法可以解决此问题:

(1)使用泛型类型(如下所示)声明ArrayList,即它只能存储Vehicle类型对象,以便在从vehicledetails检索对象时不需要显式强制转换列表(更喜欢此选项):

List<Vehicle> vehicledetails = new ArrayList<>();

(2)使用如下所示的类型转换:

for (int i=0;i< vehicledetails.size();i++) {
  Vehicle s  = (Vehicle)vehicledetails.get(i);
  //add other code
}