当前位置: 代码迷 >> J2SE >> 帮忙分析这段代码的错误,arraylist类型转换有关问题
  详细解决方案

帮忙分析这段代码的错误,arraylist类型转换有关问题

热度:29   发布时间:2016-04-24 13:08:04.0
帮忙分析这段代码的错误,arraylist类型转换问题
Java code
import java.util.ArrayList;public class Vehicle {       public void run(){          System.out.print("Vruum");      }     public void stop(){         System.out.print("stop!");      }  }      class Car extends Vehicle{        public void run(){          System.out.print("Car vruum");        }      public static void main (String... args){          ArrayList<Vehicle> cars = new ArrayList<Car>();          cars.run();      }  } 

分析详细的分多 :)

------解决方案--------------------
ArrayList<Vehicle> cars = new ArrayList<Car>(); 
ArrayList<Vehicle>这个整体代表一个类型
ArrayList<Car>这个整体代表一个类型,

又继承关系的Vehicle和Car,而ArrayList<Vehicle>,ArrayList<Car>没又这层关系,所以类型不兼容,错误。

修改:
ArrayList<? extends Vehicle> cars = new ArrayList<Car>(); 
表示可以基类为Vehicle的所有类。
------解决方案--------------------
Java code
import java.util.ArrayList;public class Vehicle {       public void run(){          System.out.print("Vruum");      }     public void stop(){         System.out.print("stop!");      }  }      class Car extends Vehicle{        public void run(){          System.out.print("Car vruum");        }      public static void main (String... args){          //还有,这句话不报错吗?我的jdk1.5         ArrayList<Vehicle> cars = new ArrayList<Car>();          //cars.run(); //这句话出错把,应该改为          cars.add(new Car());          cars.get(0).run();     }  }
  相关解决方案