ClassCastException
是Java中常見的運行時異常,它表示試圖將一個對象強制轉換為不兼容的類型。出現ClassCastException
的原因主要有以下幾種:
ClassCastException
。例如:interface MyInterface { }
public class Main {
public static void main(String[] args) {
MyInterface obj = new MyInterface(); // 這里會拋出ClassCastException
}
}
ClassCastException
。例如:Object obj = "Hello, World!";
String str = (String) obj; // 這里不會拋出異常,因為"Hello, World!"是String類型
Integer num = (Integer) obj; // 這里會拋出ClassCastException,因為obj實際上是String類型
ClassCastException
。例如:Object[] objArray = {"Hello", "World"};
String[] strArray = (String[]) objArray; // 這里不會拋出異常,因為objArray實際上是String類型數組
Integer[] numArray = (Integer[]) objArray; // 這里會拋出ClassCastException
ClassCastException
。例如:class Animal { }
class Dog extends Animal { }
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
Dog dog = (Dog) animal; // 這里不會拋出異常,因為animal實際上是Dog類型
Animal anotherAnimal = new Animal();
Dog anotherDog = (Dog) anotherAnimal; // 這里會拋出ClassCastException
}
}
為了避免ClassCastException
,你應該在強制類型轉換之前檢查對象的類型,或者使用instanceof
關鍵字來確保對象是你試圖轉換的類型。