ClassCastException
是Java中的一個運行時異常,它發生在試圖將對象強制轉換為不兼容的類型時。根據其發生的上下文和原因,這個異常可以大致分為以下幾類:
ClassCastException
類型。當你試圖將一個對象轉換為與其實際類型不兼容的類型時,就會拋出此異常。例如:Object obj = new String("Hello");
String str = (String) obj; // 這里會拋出ClassCastException,因為obj實際上是String類型,而不是Object類型
Integer[] intArray = {1, 2, 3};
int[] primitiveArray = (int[]) intArray; // 這里會拋出ClassCastException
List<String> strList = new ArrayList<>();
strList.add("Hello");
String str = (String) strList.get(0); // 這里實際上不會拋出異常,因為strList中的元素確實是String類型
// 但是,如果你有一個非String類型的列表,并試圖將其元素強制轉換為String,則會拋出異常
List<Object> objList = new ArrayList<>();
objList.add(new Integer(123));
String str2 = (String) objList.get(0); // 這里會拋出ClassCastException
valueOf
、castTo
等方法),但在運行時這些方法試圖將對象轉換為不兼容的類型,也可能會拋出ClassCastException
。為了避免ClassCastException
,你應該在強制類型轉換之前始終檢查對象的類型,或者使用更安全的類型轉換方法(如Java中的instanceof
關鍵字)。