2015-05-29 51 views
2

我有一個沒有擴展Serializable或Externalizable接口的類,但是我仍然在netbeans中使用FindBugs的時候遇到了bug。任何人都可以告訴我如何解決這個問題?不可序列化的類中的非暫時性不可序列化的實例字段?

這是我的類從FindBug

public class Analyzer extends javax.swing.JPanel implements ItemListener, KeyListener{ 

public AnalyzerVariable [] objAnalyzerVar = new AnalyzerVariable [3]; 
public AnalyzerVariable objAnalyzerDataTypeInfo; 

} 

錯誤:類分析器定義的一種非過渡不可序列實例字段objAnalyzerVar並且也同樣爲objAnalyzerDataTypeInfo;

+0

又一個FindBugs異常。只需在規則集中對其進行例外即可。每個Swing組件的Javadoc中都有一個特定的警告,用來對它們進行序列化,只有一個瘋子纔會真正嘗試。 – EJP

回答

2

public class Analyzer extends javax.swing.JPanel implements ItemListener, KeyListener{...

Analyser是一個子類javax.swing.JPanel。 由於javax.swing.JPanelSerializable類,Analyser也是Serializable。所以Findbugs正在顯示,作爲一個錯誤。

更多關於javax.swing.JPanel - javadoc

+0

是的,我說得對,但我該如何解決? –

+1

你有3個選項。 1.使'AnalyzerVariable'可串行化。 2.如果可以重新計算'AnalyzerVariable'類型的成員,則標記爲'transient'。 3.正如@EJP指出的那樣,爲Findbug規則集添加一個異常。 – Kishore

+0

非常感謝Kishore .... –

相關問題