我正在尝试使用Java创建一个简单的GUI。我有一个数组列表 执行如下:
private List<Vehicle> vehicles = new Arraylist<>();
我正在尝试传递具有比超类更多的参数的子类对象。
我尝试过强制转换并覆盖toString方法,但似乎没有任何作用
我的supeprclass:
public abstract class Vehicle {
private int speed;
public Vehicle (int speed) {
this.speed = speed;
}
}
我的子类:
public class Car extends Vehicle {
private int gear;
public Car (int speed, int gear) {
super(speed);
this.gear = gear;
}
}
public class Bike extends Vehicle {
public Bike (int speed) {
super(speed);
}
}
我在初始化Arraylist的类中实例化
Car car = new Car (100, 5);
vehicles.add(car);
我可以毫无问题地初始化Car。发送参数,但是即时获取的结果只是超类的一个实例。我要去哪里错了?
答案 0 :(得分:2)
java泛型的一个众所周知的方面是List<Car>
不是List<Vehicle>
的子类。这就是为什么存在诸如List<? extends Vehicle>
和List<? super Car>
之类的构造的原因。有许多在线资源显示如何处理您的情况。例如Generics, Inheritance and Subtypes