Как создать псевдоним для частного внутреннего класса (используя XStream)? - PullRequest
1 голос
/ 02 февраля 2010

Я создаю псевдонимы для длинных имен классов ... Он прекрасно работает, но один из сериализованных классов является закрытым внутренним классом. Я не могу придумать способ создать для него псевдоним, кроме как сделать его публичным. Мне не нравится это решение, потому что оно не должно быть публичным. Но поскольку создание псевдонима для него позволит изменять имена пакетов и классов без необходимости изменения файлов XML (поскольку первый тег - это полное имя класса).

Вот как я создаю псевдонимы:

xstreamInstance.alias("ClassAlias", OuterClass.InnerClassToAlias.class);

Вот почему мне нужен открытый доступ к этому внутреннему классу.

Так что, если кто-то знает хитрость для псевдонима частного внутреннего класса, я действительно хотел бы услышать об этом.

Ответы [ 2 ]

1 голос
/ 04 февраля 2010

Вы можете создать класс, подобный следующему, и передать ссылку на xstreamInstance методу alias.

public class Parent {
    public void alias(XStream x) {
        x.alias("Kiddie", Parent.Child.class);
    }

    private class Child {

    }
}
0 голосов
/ 24 февраля 2010

Как насчет использования аннотаций для псевдонима?

public class Parent {
    @XStreamAlias("kiddie")
    private class Child {

    }
}

Редактировать: Увы, анализ аннотаций вложенных классов не поддерживается XStream при запросе анализа родительского класса.

...