![](/img/trans.png)
[英]ClassCastException when casting object Array to Long array
[英]ClassCastException when casting to object array
我收到此運行時錯誤:
Exception in thread "main" java.lang.ClassCastException: Employee cannot be cast to [LEmployee;
它來自這一行代碼,在這里我將文件內容轉換為Employee []
Employee[] EmpArray;
EmpArray = (Employee[]) objectIn.readObject();
使我感到困惑的是錯誤中的“ [L””。 我不知道那是哪里來的。
[L
Java
[L
表示“該類的一維對象數組,其全限定名緊隨其后,直到(並排除) ;
符號為止”(例如[Ljava.lang.String;
表示String[]
數組)。 有關更多詳細信息,請參見StackOverflow
上的相關問題 。
沒有更多細節,人們只能推測ClassCastException
的原因。
顯然,您正在嘗試從ObjectInputStream
反序列化Employee[]
數組,該數組實際上是從序列化的Employee
(不是Employee[]
)對象讀取的。
問題可能出在序列化邏輯中。
要檢查是否存在這種情況,只需將readObject()
調用readObject()
為Employee
,而不是Employee[]
,然后看是否可行。
可以在這里找到解釋字節碼(以及更多內容)的很好的讀物: http : //www.cubrid.org/blog/dev-platform/understanding-jvm-internals/-有關字節碼類型表達式,請參見表1。
您的情況很有趣(Java字節碼-類型-描述):
次要nitpick:變量EmpArray
不遵循Java命名約定,因為它以大寫字母開頭。 參考: http : //www.javapractices.com/topic/TopicAction.do? Id= 58
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.