[英]Non-serializable field in serializable class (transient keyword)
我有一個擴展 Servlet 的可序列化類
public class FileDownload extends HttpServlet{
@SuppressWarnings("compatibility:6754389671327954013")
private static final long serialVersionUID = 1L;
private ResultSet rset;
......
}
我的問題是:
rset
對象是否在編譯時或運行時自動轉換為transient
? 還是我必須將其明確標記為transient
? (這是我的 IDE JDeveloper 發出的警告)。
不,序列化不會忽略該字段 - 如果您嘗試序列化FileDownload
的實例,您將得到java.io.NotSerializableException
。 將其標記為transient
。 順便說一句, ResultSet
作為Servlet
中的字段做什么? 這不是線程安全的。 在任何上下文中, ResultSets
都應該只是局部變量。
你必須自己調用transient
。但是你不能serialize
一個對象,除非它實現了Serializable
接口。ResultSet 就是這樣一種對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.