NotSerializableException в Android

Из документов Java я убедился, что логические значения и байты являются сериализуемыми. Согласно документации для Android, мой класс реализует сериализуемый интерфейс. Я не уверен, почему я продолжаю получать исключение. Что мне здесь не хватает? Класс такой:

public class msgStruct implements Serializable {
    boolean pingPong = false; 
    int msgId = 0;
    byte[] bufferMsg = new byte[100];
}

Это сериализуется перед отправкой через сокет на сервер, например так:

sendMsgStruct.pingPong = false;
sendMsgStruct.msgId = msgId;
rand.nextBytes(sendMsgStruct.bufferMsg);
try {
    ObjectOutputStream serializeMobile = new ObjectOutputStream(mobileSocket.getOutputStream());
    serializeMobile.writeObject(sendMsgStruct);
    serializeMobile.close();
} catch (IOException e1) {
    e1.printStackTrace();
    return false;
} 

Сервер десериализуется следующим образом:

try {
     ObjectInputStream deserializeServer = new ObjectInputStream(clientSocket.getInputStream());
     recvMsgStruct = (msgStruct) deserializeServer.readObject();
     deserializeServer.close();
    } catch (ClassNotFoundException e1) {
      e1.printStackTrace();
    }

Я получаю исключение в строках, где объект сериализуется и десериализуется.

1 ответ

Решение

Является ли msgStruct внутренним классом случайно? Если это так, то попробуйте сделать его статическим или переместить его в собственный файл Java.

Другие вопросы по тегам