首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Object 轉 String 執行期錯誤:ClassCastException 解析

     編輯:程式設計疑難解答

錯誤程式碼

Object d = 4;          // 自動裝箱為 Integer
String g = (String)d;  // 執行期拋出 ClassCastException

錯誤原因

Object d 實際指向 Integer 物件。Java 強制轉型要求物件實際型別必須是目標型別或其子類別。Integer 與 String 無繼承關係,故無法轉換。

正確轉換方式

需求寫法說明
任意物件 → 字串String s = String.valueOf(obj);null 安全,回傳 "null"
已知為 String 物件String s = (String) obj;需確保實際型別為 String
數值 → 字串String s = Integer.toString(num);或 String.valueOf(num)

繼承關係圖解

Object
 ├── String
 ├── Integer
 ├── Double
 └── ...

只有同一分支(如 Object → String)才能向下轉型。Integer 無法轉為 String,正如「指鹿為馬」。

正確範例

Integer t = 4;
Object o = t;               // 向上轉型:子類 → 父類,安全
String s = String.valueOf(o); // 正確取得 "4"

總結

編譯通過 ≠ 執行安全。Object 參考可指向任何子類,但強制轉型必須符合實際型別。轉字串請用 String.valueOf() 或 toString(),避免直接 Cast。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved