ObjectInputStream.readFields()
отговаря на условията само в рамките на private void readObject(ObjectInputStream)
метод.
public ObjectInputStream.GetField readFields() throws IOException, ClassNotFoundException {
SerialCallbackContext ctx = curContext;
if (ctx == null) {
throw new NotActiveException("not in call to readObject");
}
...
Аз съм в ситуация, когато не мога да използвам сериализация по подразбиране за четене на обект (т.е. ObjectInputStream.defaultReadObject()
) и не желая да внедрявам readObject()
метод във всичките си класове. В идеалния случай бих искал да имам ownDefaultReadObject()
метод, който ще конструира нов обект от сериализирани полета (напр. чрез отражение).
Някакви идеи?
Ако някой иска да знае повече. Имената на полетата в някои от моите класове бяха преименувани (напр. от обфускатор) на a, b, c и т.н. Такива класове бяха сериализирани с преименувани полета, използвайки сериализация на Java по подразбиране. Трябва да ги десериализирам до оригинални класове (знам двойки имена на полета за всеки клас; a=> fieldName, b=> age, c=>gender и т.н.).
readObject()
? - person user207421   schedule 31.07.2015readObject()
, което делегира повикването към персонализиран манипулатор? По този начин, въпреки че трябва да внедрите метода във всеки клас, внедряването ще бъде само едно извикване на метод. - person biziclop   schedule 31.07.2015