Как клонировать объект путем копирования ByteArrayOutputStream в ByteArray, а затем вызвать его ByteArrayInputStream? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь клонировать объект, 1) помещая его в ByteArrayOutputStream 2) назначая поток байтовому массиву 3) читая байтовый массив ByteArrayInputStream.Однако это не будет работать, так как я не могу назначить OutputStream байтовому массиву, строка просто не будет выполняться.

Основан Apporoach Сериализуемый Java-объект для байтового массива

public Bank clone() {
        Bank objektKopie = null;
        byte[] byteKopie = null;
        ByteArrayOutputStream bo = new ByteArrayOutputStream();
        ObjectOutputStream oo = null;
        try {
            bo = new ByteArrayOutputStream();
            oo = new ObjectOutputStream(bo);
            oo.writeObject(this);
            oo.flush() ;
            byteKopie = bo.toByteArray(); // THIS WILL NOT HAPPEN
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            try {
               bo.close();
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
        ByteArrayInputStream bi = new ByteArrayInputStream(byteKopie); // byteKopie IS STILL NULL
        ObjectInputStream oi = null;
        try {
            oi = new ObjectInputStream(bi);
            objektKopie = (Bank) oi.readObject();
        } catch (Exception e) { System.out.println(e.getMessage()); }
        return objektKopie;
    }

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

если с зависимостями все в порядке, GSON может сделать это довольно легко

0 голосов
/ 29 мая 2019

Ваш код выдает исключение "NotSerializable", ваш класс Bank нуждается в реализации Serializable

...