2012-07-05 82 views
-3

我試圖在Java中通過下面的類定義擴展LinkdList擴展LinkedList類:警告的Java中的

public class Roster extends LinkedList<Teammate>{ 

} 

,但我這樣做收到以下警告:

The serializable class Roster does not declare a static final serialVersionUID field of type long 

什麼這是否意味着如何刪除警告?

+0

閱讀java文檔 - http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html – adatapost

+0

請閱讀http://stackoverflow.com/questions/285793/what -is-a-serialversionuid-and-why-should-i-use-it – Garbage

回答

4

警告意味着你沒有做什麼你「同意」當您擴展,這樣做類。如果你擴展它,那個班會相信你的班級裏會有static final serialVersionUID field of type long。這是因爲它是implements Serializable這是一個需要這個變量的接口。

要剿警告加:

@SuppressWarnings("serial") 

,你聲明類線以上(public class Foo

要解決該警告聲明的變量,如下所示:

private static final long serialVersionUID = 1812107715815332895L; 

而且確保你使用的是隨機生成的。

Eclipse允許通過點擊行號旁邊的黃色燈泡將這兩個選項作爲快速修復。

+0

謝謝。我沒有看到我正在使用這個類來實現Serializable接口。我在某些方面是Java noob,所以我仍然在學習java文檔的全部內容。起初沒有最好的方位很容易...... – WildBill

+1

@WildBill不客氣。如果回答你的問題,請接受我的答案爲正確答案。謝謝 :) – Talon876

1

serialVersionUID是用於 可序列化類的通用版本標識符。反序列化使用此編號確保加載的類完全對應於序列化的對象。如果找不到匹配 ,則拋出InvalidClassException。

爲了解決這個問題,聲明靜態唯一的ID在類 -

private static final long serialVersionUID = 75264722950069776147L; //唯一的ID