Это не имеет большого смысла для меня.
Итак, я пытаюсь записать объект в ByteArray, но по какой-то причине он ничего не записывает, что я вижу по тому факту, что возвращаемое значение равно 0
Что возвращает 0? Метод writeObject
вообще не возвращает никакого значения - его метод void
!
... и тот факт, что чтение приводит к исключению.
Это не обязательно означает, что запись не удалась.
Я думаю, что нам нужно увидеть >>> все <<< кода, который связан с чтением и записью, включая объявления типов и любые включающие блоки try / catch. </p>
РЕДАКТИРОВАТЬ
Теперь, когда я вижу полный код, становится ясно, в чем реальная проблема:
....
BAoutput = new ByteArrayOutputStream();
Oout = new ObjectOutputStream(BAoutput);
BAinput = new ByteArrayInputStream(BAoutput.toByteArray());
Oin = new ObjectInputStream(BAinput);
...
Метод ByteArrayOutputStream.toByteArray()
возвращает копию текущего содержимого потока. Поскольку в поток еще ничего не записано, массив байтов, естественно, пуст.
Решением вашей проблемы является извлечение байтового массива и создание ByteArrayInputStream
после , когда вы закончили запись в Oout
и сбросили или закрыли его.