我想保存
的对象 javafx.scene.media.MediaPlayer
使用ObjectOutputStream的类,但它只适用于可序列化的类,看起来MediaPlayer类不可序列化。
这是我的代码:
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
MediaPlayer[] player = songList.toArray(new MediaPlayer[songList.size()]);
objectOutputStream.writeObject(player); // error occurs here
objectOutputStream.close();
我收到了这个错误:
java.io.NotSerializableException: javafx.scene.media.MediaPlayer
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at mp3.MusicPlayer.saveSongs(MusicPlayer.java:72)
at mp3.MainFrame$1.windowClosing(MainFrame.java:55)
如何解决这个问题?
答案 0 :(得分:1)
这里最好的问题是你为什么要首先保存它。考虑到MediaPlayer是一个JavaFx组件,我没有看到想要序列化和保存它的原因。
假设您要实现的目的是保存您传入的歌曲列表,我会继续这样做。
序列化和保存MediaPlayer
之类的对象没有意义,只需保存歌曲列表和/或任何设置。然后,如果你可以在其他地方重建它,只需反序列化保存的数据并用它们重建一个新的MediaPlayer实例。