I tried to implement cross-platform serialization between Java and Android. I used Serializable and have my Android code in the same package as Java desktop.
Source: java-desktop serialization
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(); } }
Source: Android - deserialization
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(); } }
A student is a class that implements Serializable. On the desktop, I serialize the student instance to "thestudent.dat". I put this file on an SD card on an Android device and I am trying to deserialize it. I get the error java.lang.ClassCastException: javaserializace.Student . But why? I have the same package when serializing, the same package when deserializing. All that distinguishes the name of the project. Do you see any solution?
Edited - Student class source:
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; } }
source share