java - 具有来自子类的 2 个构造函数的 Arraylist
问题描述
我正在尝试使用 Java 创建一个简单的 GUI。我有一个像这样执行的 Arraylist:
private List<Vehicle> vehicles = new Arraylist<>();
我试图传递一个比超类具有更多参数的子类对象。
我试过铸造它并覆盖 toString 方法,但似乎没有任何效果
我的超班:
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);
我可以毫无问题地初始化汽车。参数被发送,但我得到的结果只是超类的一个实例。我哪里错了?
解决方案
它是java 泛型的一个众所周知的方面,List<Car>
它不是List<Vehicle>
. 这就是为什么有诸如List<? extends Vehicle>
and之类的结构List<? super Car>
。有许多在线资源展示了如何处理您的情况。例如泛型、继承和子类型
推荐阅读
- javascript - 有什么方法可以删除 gojs 中的 nodeArrayelements
- r - 有没有办法在 R 中的数据框组内创建索引?
- libssh2 - libssh 与 libssh2 的主要区别是什么?
- python-3.x - OAUTH2 在 localhost(带有 sub.domain.com)中运行良好,但在服务器中因“401 url not authorized”而失败
- java - 我可以只用 sonarqube 分析 .class 文件吗?
- haskell - Haskell:希望在数据结构中添加数组字段
- iis - 如何阻止来自 IIS 的 .GZ 文件
- django - Django 在返回第一个请求之前执行第二个请求
- python - 使用 datetime 将时隙从字符串转换为时间
- javascript - 如何调试最大调用堆栈大小超出错误