2013-11-27 2 views
1

Мне нужно отправить Object в качестве байтового массива другому методу, который сам вернет другой массив байтов из объекта.Ошибка при преобразовании класса в массив байтов и наоборот?

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

byte[] bytesArray; 
Gato gatito = null; 
Gato gato = new Gato(); 
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
ObjectOutput out = null; 

try { 

out = new ObjectOutputStream(bos); 
out.writeObject(gato); 
bytesArray = bos.toByteArray(); 
} 

finally { 
out.close(); 
bos.close(); 
} 

System.out.println("Gatito es nulo? "+gatito==null); 
byte[] huntedCat = cliente.method(bytesArray); 

ByteArrayInputStream bis = new ByteArrayInputStream(huntedCat); 
ObjectInput in = null; 
try { 
in = new ObjectInputStream(bis); 
gatito = ((Gato)in.readObject()); 
} finally { 
bis.close(); 
in.close(); 
} 

System.out.println(gatito.nombre); 


} 

И так это метод, названный, который фактически выполняет те же операции вполне:

public byte[] method(byte[] something) { 

    byte[] bytesArray = null; 
    Gato gato = new Gato(); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    ObjectOutput out = null; 

    try { 

    out = new ObjectOutputStream(bos); 
    out.writeObject(gato); 
    bytesArray = bos.toByteArray(); 
    out.close(); 
    bos.close(); 

    } 
    catch(IOException e) { 

    } 

    return bytesArray; 
} 

Я всегда получаю сообщение об ошибка, поэтому программа останавливается и getMessage from exception говорит Gato, который является классом, который я преобразовываю в массив байтов.

+1

Не глотать свои исключения, обращаться с ними. –

+0

Какая ошибка? использование try ... catch ... наконец. вы игнорируете исключения – Nishant

ответ

2

Может быть, ваш класс Gato не реализует Serializable?

См: Serializable (JavaDocs)

Смежные вопросы