近日項目中一個類實現了Serializable接口,Rebuild Project就報瞭如下錯誤:
Error:Execution failed for task ':app:greendao'.
> Found 1 problem(s) parsing "E:\heshenghuo\HeShengHuo\app\src\main\java\com\hbmcc\heshenghuo\db\MsgModel.java". First problem:
Pb(96) The serializable class MsgModel does not declare a static final serialVersionUID field of type long (536871008 at line 18).
Run gradle with --info for more details.
要給該實體類聲明一個serialVersionUID(Java的序列化機制是通過在運行時判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地相應實體(類)的serialVersionUID進行比較,如果相同就認爲是一致的,可以進行反序列化,否則就會出現序列化版本不一致的異常。(InvalidCastException))
Android Studio如何生成這個serialVersionUID呢?
File--Setting--Editor--Inspections--Java--Serialization issues--勾選Serializable class without "serialVersionUID"即可
選中實體類類名按住Alt+Enter,選擇條目,即可生成serialVersionUID,如圖: