1
Doodle이라는 객체가 있는데, 문자열로 직렬화합니다. 개체를 deserialize하려고 할 때 문제가 발생합니다. 오류는 다음과 같습니다. java.io.InvalidClassException : java.util.ArrayList; 로컬 클래스 호환 : 스트림 classdesc 용의 serialVersionUID = 8664875232659988799 = 8683452581122892189java.io.InvalidClassException : 문자열에서 객체로의 직렬화 실패 java
방법은 직렬화 및 역 직렬화하는 로컬 클래스의 serialVersionUID는 다음과 같다 :
public static String serDoodle(Doodle dood){
String serializzato = null;
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(dood);
so.flush();
serializzato = bo.toString();
so.close();
bo.close();
} catch (Exception e) {
System.out.println(e);
}
return serializzato;
}
public static Doodle deserDoodle(String deserializza){
Doodle dod = new Doodle();
try {
byte[] b = deserializza.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
dod=(Doodle) si.readObject();
si.readObject().getClass();
si.close();
bi.close();
} catch (Exception e) {
System.out.println("deserDoodle "+e);
}
return dod;
}
제가 다른 직렬화 (그러나 다른 변수)와 동일한 방법을 사용하여 유형의 개체 및 그 중 하나를 크게 작동합니다. 문제가 어디인지 이해할 수 없습니다.
그러면 문자열이 길어질수록 더 많은 데이터가 손실됩니다. – user3457185
@ user3457185 평소와 마찬가지로 '그렇게 당신이'질문을, 나는 그런 종류의 아무것도 말했다. 바이너리 데이터의 컨테이너로서'String'을 사용하는 것이 좋지 않다고 말했습니다. 기간. 길이와 아무 관련이 없습니다. – EJP