Java - 和泛型無關的錯誤:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
剛好遇到這類例子,看到網路上滿多人也碰過,
連結(https://stackoverflow.com/questions/22731706/java-lang-classcastexception-ljava-lang-object-cannot-be-cast-to-ljava-lang)中的問答皆可參考。
看完才懂自己錯在哪:
因為ArrayList內部用的是Object[]型別。當我們想轉型成String[]會失敗是因:「Object非String的subType」且「因一開始new出來時就是new Object[],而非new String[]」,因而即使「強制轉型」也會失敗,更別提和「有無使用泛型」相關了。
連結(https://stackoverflow.com/questions/22731706/java-lang-classcastexception-ljava-lang-object-cannot-be-cast-to-ljava-lang)中的問答皆可參考。
看完才懂自己錯在哪:
因為ArrayList內部用的是Object[]型別。當我們想轉型成String[]會失敗是因:「Object非String的subType」且「因一開始new出來時就是new Object[],而非new String[]」,因而即使「強制轉型」也會失敗,更別提和「有無使用泛型」相關了。
留言
張貼留言