SimpleXml Framework - встроенные коллекции - PullRequest
10 голосов
/ 17 февраля 2011

Я пытаюсь сериализовать встроенную коллекцию, используя простой. Например:

Map<String, List<MyClass>>

Я уже добавил необходимые аннотации в MyClass, пробовал с @ElementMap, но это не работает: Exception in thread "main" org.simpleframework.xml.transform.TransformException: Transform of class java.util.ArrayList not supported

Если это просто

@ElementMap Map<String, MyClass>

работает нормально. Я не знаю, что делать со встроенной коллекцией. Я знаю об аннотации @ElementList, но не знаю, как ее использовать в этом случае. Есть намеки?

1 Ответ

9 голосов
/ 22 февраля 2011

Я сталкиваюсь с той же проблемой.Единственный способ, которым мне удалось заставить его работать, - это по-настоящему дурацкий взлом - завернуть List в другой класс.

public class MyWrapper {

    @ElementList(name="data")
    private List<MyClass> data = new ArrayList<MyClass>();

    public MyWrapper(List<MyClass> data) {
        this.data = data;
    }

    public List<MyClass> getData() {
        return this.data;
    }

    public void setData(List<MyClass> data) {
        this.data = data;
    }

}

И затем вместо

@ElementMap Map<String,List<MyClass>>

... выбыло бы:

@ElementMap Map<String,MyWrapper>

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

...