ここで何が起こっているのか説明できる人はいますか?スーパークラス参照のJavaキャスト
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
}
}
JVMは、例外をスローしているときにJVMがカーであることを認識しているためです。 –
コンパイラは例外を分割しません。コードは**ランタイム** ClassCastExceptionをスローします。 –
@Pregnantママ、もしあなたがそれらのどれかに満足すれば答えを受け入れてください。 – Reddy