Serialización de Java – deserialización de Android

He intentado implementar la serialización entre plataformas entre Java y Android. He utilizado Serializable, y tener mi código en Android en el mismo paquete que en Java de escritorio.

Fuente: java-desktop serializing

Student student=new Student(); student.setName("John"); student.setSurname("Brown"); student.setNumber(776012345); try { FileOutputStream fout = new FileOutputStream("thestudent.dat"); ObjectOutputStream oos = new ObjectOutputStream(fout); oos.writeObject(student); oos.close(); } catch (Exception e) { e.printStackTrace(); } } 

Fuente: Android – deserialización

 File file=new File(getExternalFilesDir(null), "thestudent.dat"); try { FileInputStream fint = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fint); Student stud=(Student) ois.readObject(); ois.close(); } catch (Exception e) { e.printStackTrace(); } } 

Estudiante es una clase, que implementa Serializable. En el escritorio serializo la instancia del estudiante a "thestudent.dat". Pongo este archivo en la tarjeta SD en el dispositivo Android y estoy tratando de deserializarlo. Estoy recibiendo error java.lang.ClassCastException: javaserializace.Student . ¿Pero por qué? Tengo el mismo paquete al serializar, el mismo paquete al deserializing. Todo lo que es diferente es el nombre del proyecto. ¿Ves alguna solución?

Editado – fuente de la clase Estudiante:

 public class Student implements Serializable { private String name; private String surname; private int number; private char gender; private int age; private long rc; private int id; public Student(){ ; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } public int getId() { return id; } public void setId(int id) { this.id = id; } public long getRc() { return rc; } public void setRc(long rc) { this.rc = rc; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } } 

3 Solutions collect form web for “Serialización de Java – deserialización de Android”

Estoy seguro de que dos versiones de Student en ambos lados no son las mismas.

Porque la excepción es

Java.lang.ClassCastException: javaserializace.Student.

Lo que indica que Java ha deserializado con éxito el objeto, pero mientras que la tipificación a Estudiante en el lado del receptor, está lanzando excepción porque los tipos no son los mismos.

Una forma rápida de depurar esto es invocar getClass () en el objeto Student recibido y getName () en la clase Student en el receptor. Estoy seguro de que en este caso ambos son diferentes.

Y la solución será asegurar que el Estudiante en el lado del receptor sea del mismo tipo.

No veo ningún problema con el código que publica. Mi conjetura es que el Student no está en el mismo paquete exacto en ambos lados. Así que si es "com.acme.Student" en el escritorio, también debe ser que en Android.

También su buena idea para agregar serialVersionUID en caso de que su Student cambia en el futuro.

Yo recomendaría usar algo como Kryo o Protocol Buffers para su serialización. Sería mucho más rápido con una carga útil más pequeña. El único inconveniente es que es necesario incluir un frasco adicional.

  • Coloque varios parámetros en ContentResolver.requestSync
  • Serializar una ArrayList
  • ¿Cuál es la mejor manera de guardar el contenido de una ArrayList?
  • Ventajas de Parcelable sobre JSON
  • ¿Recomendaciones para datos persistentes en Android?
  • Serialización y des-serialización de android.graphics.Bitmap en Java
  • ¿Cuál es la mejor manera de serializar una imagen (compatible con Swing) de Java a Android?
  • JSONObject no serializable?
  • Restlet en Android - Problemas con la serialización
  • Java.lang.RuntimeException: Paralleable encontró IOException escribiendo objeto serializable en Android que pasa el objeto ArrayList
  • Serialización Gson dependiendo del valor del campo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.