XML-сериализация: сериализация коллекции подклассов - PullRequest
0 голосов
/ 14 сентября 2018

В настоящее время я сталкиваюсь со следующей проблемой: у меня есть абстрактный класс A, расширенный многими подклассами B1, B2, ..., Bn.Некоторые экземпляры этих подклассов хранятся в коллекции, представьте себе что-то вроде:

Vector<A> container = new Vector<>();
container.add(new B1());
container.add(new B2());
container.add(new B3());

Все атрибуты этих классов имеют стандартные типы, такие как double, int и String (без экзотических типов).Суперкласс имеет несколько атрибутов, плюс каждый подкласс имеет свои собственные атрибуты.Мне нужно сериализовать эту коллекцию в файл XML.Однако при использовании чего-то вроде:

public static void serializeObjectToXMLFile (Object obj, String path) throws IOException
{
    FileOutputStream fos = new FileOutputStream(path);
    XMLEncoder encoder = new XMLEncoder(fos);
    encoder.setExceptionListener(new ExceptionListener() {
        public void exceptionThrown(Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    });
    encoder.writeObject(obj);
    encoder.close();
    fos.close();
}

только атрибуты суперкласса сериализуются (те из подклассов не сериализуются, и мне нужно, чтобы они были в файле XML).

Есть идеи?

Большое спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...