簡體   English   中英

可序列化類中的不可序列化字段(transient 關鍵字)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM