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