2016-04-08 97 views
0

所以我有一個三類視頻商店的圖形用戶界面,它應該保存股票的視頻記錄。然而,它節省了使用序列,但由於某種原因,即使我沒有得到任何錯誤,只是數值是通過使其成爲視頻對象..對象ArrayList在反序列化後失去字符串值?

enter image description here

通知如何最左邊的三列,最右邊列都是空的。這是因爲他們的意思是在他們的字符串,但他們不...

正如我所說我沒有得到任何錯誤,所以這真正讓我困惑。

構造VideoStore.java(圖形用戶界面類)的:

public VideoStore() { 
     initComponents(); 
     model = (DefaultTableModel)displayVideos.getModel(); 
     try{ 
     BinaryFile = new BinaryFile(); 
     BinaryFile.load(); 
     } 
     catch(Exception e){ 

     } 
      for(int j = 1; j < BinaryFile.videosList.size(); j ++) { 
      Video load = (Video)BinaryFile.videosList.get(j); 
      String tempName = load.getVideoName(); 
      String tempProd = load.getProducer(); 
      String tempRat = load.getRating(); 
      String tempGenre = load.getGenre(); 
      short tempNum = load.getVidNum(); 
      float tempPrice = load.getvideoPrice(); 

      try { 
       Object[] row = {ID, tempName, tempProd, tempGenre, tempPrice, tempNum, tempRat}; 
       model.addRow(row); 
      } catch(Exception e){ 

      } 

      ID++; 
     } 
    } 

,然後,我用它來處理.ser文件BinaryFile類:

public void load(){ 
     try 
     { 
     FileInputStream fileIn = new FileInputStream("/Users/hanaezz/Desktop/output.ser"); 
     ObjectInputStream in = new ObjectInputStream(fileIn); 
     videosList = (ArrayList)in.readObject(); 
     in.close(); 
     fileIn.close(); 
     } catch(Exception i) 
     { 
     i.printStackTrace(); 
     return; 
     } 
    } 

    public static void adderoo(Video v) { 
     videosList.add(v); 
    } 

最後,視頻類在ArrayList中:

private static String videoName; 
private static String producer; 
private static String rating; 
private static String genre; 
private short videoNumber; 
private float videoPrice; 

回答

6

靜態變量是不是序列化,你應該把:

private String videoName; 
private String producer; 
private String rating; 
private String genre; 
private short videoNumber; 
private float videoPrice; 

在你的視頻類。 您應該放入Serializable類中的唯一靜態變量是serialVersionUID(由序列化和反序列化過程使用)。如下:

private static final long serialVersionUID = 1L; 
+1

正確的答案,但事實上,他們首先是「靜態」,這只是一個更大的問題的標誌。 – Andreas

相關問題