這個問題不是關於如何使用Serializable
,我已經知道了。但是,我不知道如何實現Serializable
帶來了以下警告:
The serializable class MyClass does not declare a static final serialVersionUID field of type long
假設我想寫的界面像Serializable
,我將如何去「警告」程序員實現我的接口來聲明一個變量?我試過尋找Serializable.java
的源代碼,但是我找不到任何會導致這種行爲的東西。這甚至有可能嗎?
謝謝!Serializable如何工作?
回答
我認爲你正在尋找的行爲將使用註釋和批註處理器可以更好地實現。編譯器警告你關於不聲明serialVersionUID
的事實由編譯器級別的不同機制處理(因此,程序員無法使用)。它更像是由序列化API執行的編碼約定,而不是實現接口的結果。
事實上,here您可以檢查的Serializable
源代碼,你可以看到,有什麼特別的地方是爲迫使編譯器警告:
/* comments removed for brevity */
package java.io;
public interface Serializable {
}
不,我不認爲這是可能的僅僅是Java(可能有一些註釋?不確定)。
的事實是,Serializable
接口不是一個普通的Java接口,但更多的是標記元件,它被用作接口但它的一些特別的東西,所以它是在以自己的方式由編譯器處理(其意思表示一種功能,如接口,默認情況下,在代碼中不會透明地實現)。
是的,Java編譯器可能會做一些特殊的事情來打印該警告。我不認爲你可以用Java自己編寫任何類似的東西。 – Michael
'Serializable'在語言和編譯器中有很多內置的魔法,你不能在普通的庫中複製。 –
我認爲@Jack擊中了所有優點。內森,問題是你想要這個有多糟糕? [This](http://stackoverflow.com/q/1752607/845279)文章描述了一個可能的解決方案,即使它看起來像一個可怕的很多工作。請讓我們知道它是否工作。 – user845279
- 1. 序列化不與Serializable接口工作
- 2. Serializable如何工作,爲什麼使用比Parcelable更慢?
- 3. 如何爲Serializable生成serialVersionUID?
- 4. 如何重寫Externalizable到Serializable?
- 5. 當對象實現Serializable時Restlet/Jackson的工作方式不同
- 6. c#中的[Serializable]和[Serializable()]有區別嗎?
- 7. scala @Serializable和Java Serializable有什麼區別?
- 8. 如何編寫一個Serializable作爲http post請求的主體?
- 9. 如何使用@serializable scala對象?
- 10. 如何從Serializable中獲取類對象?
- 11. 如何通過NetDataContractSerializer測試Serializable?
- 12. 如何將Serializable轉換爲String數組?
- 13. 如何在Lagom中使Java可選Serializable?
- 14. 如何解決JSONAPI :: Serializable接口:: UndefinedSerializableClass
- 15. 當傳遞Serializable對象作爲參數
- 16. TABLOCKX與SERIALIZABLE
- 17. Exception,Return,Serializable,
- 18. JAXB - Serializable接口
- 19. Externalizable或Serializable?
- 20. JAXB - List <Serializable>?
- 21. 用於Serializable的SerialVersionUID
- 22. Python Gmail API'not JSON serializable'
- 23. PropertyModel或Serializable對象?
- 24. Spring Controller/Component Implements Serializable
- 25. Ajax如果不工作。如何工作?
- 26. 如何工作
- 27. `===`如何工作?
- 28. 如何工作?
- 29. 如何工作?
- 30. 如何:(){:| :& } ;:工作
謝謝!這就是我一直在尋找:) –
註釋是真棒! –