gpt4 book ai didi

java - Android序列化-java反序列化

转载 作者:行者123 更新时间:2023-12-02 07:24:45 24 4
gpt4 key购买 nike

我在将对象从 Android 应用程序发送到 Java 应用程序时遇到一些问题。我有一个完全相同的可序列化类。

当我在接收方使用此代码将对象从一个 java 应用程序发送到另一个 java 应用程序时,它工作得非常好:

@Override
public void run() {
super.run();
while(true){
try{
if(datagramSocket!=null)datagramSocket.close();
datagramSocket = new DatagramSocket(PORT);
buffer = new byte[4096];
inPacket = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(inPacket);

InetAddress clientAddress = inPacket.getAddress();
int clientPort = inPacket.getPort();

ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(bais));
Song song = (Song) ois.readObject();
song.setClientIP(inPacket.getAddress());
dc.addSong(song);
datagramSocket.close();

}catch (IOException e) {
System.out.println("IOException on receiving song: " + e);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

但是当我尝试在 android 中执行相同操作(因此将歌曲对象从 android 发送到 java)时,我收到了 ClassCastException:

[Lcom.audiobuddy.serializables.Song; cannot be cast to com.audiobuddy.serializables.Song

一开始我以为是因为包名不一样,所以两边都改成了“com.audiobuddy.serializeds”。但我查看了我的错误,Android应用程序更改了包,在前面添加了“[L”和“;”在后面...

两边的宋类都有相同的serialVersionUID

最佳答案

错误消息表明您尝试将 Song[]([L(...)Song 表示歌曲数组)转换为歌曲。

您可能应该更改您的 ois.readObject(); 行,如下所示:

Song[] songs = (Song[]) ois.readObject();
Song song = songs[0];

关于java - Android序列化-java反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com