我有下面的類簽名和ClientEventSourc
實現Serializable
:瞭解FindBugs的警告有關的serialVersionUID領域的
public class Grid extends ClientEventSource implements Focusable, FramingBlockWrapper,LIMSEditableField
現在FindBugs被列出這是狡猾的:
類是可序列,但沒有定義serialVersionUID
該類實現了Serializable接口,但不定義 serialVersionUID字段。一個簡單的變化就像添加一個對象的引用 一樣.class對象會向該類中添加合成域,這將不利地改變隱含的serialVersionUID(例如,將一個 引用添加到String.class將生成一個靜態域 class $ java $ LANG $字符串)。此外,不同的源代碼到字節碼 編譯器可能會使用不同的命名約定來生成引用類對象或內部類的合成變量 。要確保不同版本的Serializable的 互操作性,請考慮添加一個顯式serialVersionUID。
有人可以解釋它是什麼意思,什麼是最好的方法來解決這個問題?
是否有任何算法/程序產生這個數字?我的意思是它可以是任何事情,或者需要遵循某些最佳實踐,正如有效的java書中所描述的那樣,hashcode()可以在EqualsBuilder和HashCodeBuilder中從apache commons中實現。 – Geek 2012-08-09 10:55:27
這個數字可以是任何東西,只要它在你的序列化類中是唯一的。 Eclipse f.e.有自己的發電機,但你可以使用任何數字。 – Kostronor 2012-08-09 10:58:12