有人能解释一下这里发生了什么吗?
假设Car并且Bike是子类Vehicle.
它看起来像Vehicle v参考被投射到一个Bike.我知道这是非法的,确实是编译器吐出来的... Car cannot be cast to Bike.
但这不应该是Vehicle不能投的Bike吗?毕竟,Vehicle v是一个Vehicle参考.
public class Test {
public static void main(String[] args) {
Vehicle v = new Car();
Bike b = (Bike) v;
// some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
错误消息显示Car因为这是运行时异常。由于此时它知道车辆引用指向的实际实例(汽车、自行车或车辆),因此它会给出更具体的错误消息。
如果这是编译时的一些异常,编译器会提到Vehicle,因为编译器可能不知道车辆引用指向的实际实例。
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |