Десериализация бросает java.lang.ClassCastException - PullRequest
3 голосов
/ 10 октября 2019

Я сохраняю сериализованный класс на устройстве Android. Перенесите его на ПК с выигрышем 10 и загрузите файл с помощью:

fis = new FileInputStream(result.get(i));
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();

Класс на Android и выигрыш 10:

public class ImgLogFile implements Serializable{

        byte[] frame;
        byte[] result;
        String config;

    public String getConfig(){
            return config;
        }

    public byte[] getFrame() {
        return frame;
    }

    public byte[] getResult() {
        return result;
    }
} 

Когда я пытаюсь разыграть загруженный объект вэто класс, который я получаю:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class [Lde.mtt.smartiePlatform.ImgLogFile; cannot be cast to class de.mtt.smartiePlatform.ImgLogFile ([Lde.mtt.smartiePlatform.ImgLogFile; and de.mtt.smartiePlatform.ImgLogFile are in unnamed module of loader 'app')

Я заметил «L» перед одним путем, но не знаю, что это значит. Как я могу это исправить ?

1 Ответ

2 голосов
/ 10 октября 2019

[...] класс [Lde. [...] не может быть приведен к классу de. [...]

[ обозначает массив. [L - это массив ссылочного типа, который следует.

Итак, вы сериализовали массив и пытаетесь привести десериализованный объект к типу, который не является массивом.

(Такжене рекомендуется использовать сериализацию Java.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...