2012-05-30 3 views
1

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

Но у меня есть проблема с десериализацией. Когда я использовал 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 одинаково?

+0

Почему существует требование продлить ObjectInputstream? Я использую XStream в сочетании с платформой NetBeans для очень похожего варианта использования, не требуя этого. –

+0

Итак, нет необходимости использовать 'ObjectInputstream', но вопрос с ClassLoader остается – Uko

ответ

0

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

+0

Во многих случаях это слишком поздно. В текущих версиях XStream теперь вы можете предоставить загрузчик классов для конструктора Xstream (только FYI, я знаю, что это очень старый вопрос). – Kalle

Смежные вопросы