2016-04-08 44 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

相关问题