Загрузка класса перегрузки в XStream

Я реализую сохранение/загрузку в приложении платформы NetBeans. И я использую XStream для сериализации в XML.

Но у меня проблема с десериализацией. Когда я использовал ObjectInputStream, я перезагрузил его следующим образом:

public class NBSystemClassLoaderObjectInputStream extends ObjectInputStream
{
    public NBSystemClassLoaderObjectInputStream(InputStream in) throws IOException
    {
        super(in);
    }

    @Override
    public Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException
    {
        try
        {
            ClassLoader currentTccl = Thread.currentThread().getContextClassLoader();
            return currentTccl.loadClass(desc.getName());
        } catch (Exception e)
        {
        }
        return super.resolveClass(desc);
    }
}

Таким образом, он будет использовать функции платформы NB для поиска класса. Как я могу перезаписать загрузку класса XStream таким же образом?


person Uko    schedule 30.05.2012    source источник
comment
почему требуется расширить ObjectInputstream? Я использую XStream в сочетании с платформой NetBeans для очень похожего варианта использования без необходимости этого делать.   -  person Tim Sparg    schedule 31.05.2012
comment
Ок, ObjectInputstream использовать не обязательно, но вопрос с ClassLoader остается   -  person Uko    schedule 31.05.2012


Ответы (1)


XStream имеет два полезных метода экземпляра: getClassLoader и setClassLoader. Последний можно использовать для снабжения экземпляра XStream желаемым ClassLoader.

person Uko    schedule 31.05.2012
comment
Во многих случаях это слишком поздно. В текущих версиях XStream теперь вы можете предоставить загрузчик классов конструктору Xstream (просто к вашему сведению, я знаю, что это очень старый вопрос). - person Kalle; 06.10.2017