红颜莎娜
在寻找对我的问题的评论和缺点后,我发现我需要自己在代码中搜索问题。希望有人会发现这个问题并回答有用。问题出在我的阅读方法中readDataFromStream()。在阅读上述主题之前,我使用了这种方式声明ObservableListpublic static ObservableList<EmailData> emailData = FXCollections.observableArrayList(); 我的readDataFromStream样子:public static ObservableList<EmailData> readDataFromStream(byte[] bytes) { ObservableList<EmailData> emailData = FXCollections.observableArrayList(); try { ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bis); List<EmailData> list = (List<EmailData>) ois.readObject(); emailData = FXCollections.observableList(list); bis.close(); ois.close(); } catch (ClassNotFoundException | IOException e) { e.printStackTrace(); } return emailData;}然后我读到我需要使用提取器创建列表。我将ObservableList声明更改为:ObservableList<EmailData> emailData = FXCollections.observableArrayList(ed -> new Observable[]{ ed.nameProperty(), ed.loginProperty(), ed.passwordProperty(), ed.commentsProperty() });但我的readDataFromStream()方法保持不变。现在我把它改成:public static ObservableList<EmailData> readDataFromStream(byte[] bytes) {ObservableList<EmailData> emailData = FXCollections.observableArrayList(ed -> new Observable[]{ ed.nameProperty(), ed.loginProperty(), ed.passwordProperty(), ed.commentsProperty() }); try { ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bis); List<EmailData> list = (List<EmailData>) ois.readObject(); emailData = FXCollections.observableList( list, (EmailData tp) -> new Observable[]{tp.nameProperty(), tp.passwordProperty(), tp.loginProperty(), tp.commentsProperty()}); bis.close(); ois.close(); } catch (ClassNotFoundException | IOException e) { e.printStackTrace(); } return emailData;}和wasUpdated()方法ListChangeListener.Change 现在就像一个魅力。希望对我这样的新手有所帮助。