2016-08-18 4 views
0

В моем примере JAXBContext.newInstance(T) нужен параметрический класс и это решение с дженериками не работает.Как использовать дженерики в аргументе нужен класс

public class SerializationUtilJaxb<T> { 

    public String serialize(T jaxbObject) { 
     StringWriter stringWriter = new StringWriter(); 
     try { 
      JAXBContext jaxbContext = JAXBContext.newInstance(T); 
      Marshaller objectMarshaller = jaxbContext.createMarshaller(); 
      objectMarshaller.marshal(jaxbObject, stringWriter); 
      return stringWriter.toString(); 
     } catch (JAXBException e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 

Могу ли я спросить, почему? И что такое правильное решение с дженериками?

ответ

1

Использование неограниченный подстановочный знак?.

public static void SerializationUtilJaxb(Class<?> rootClass, Object rootObj) throws JAXBException, IOException{ 

     try{ 
      StringWriter stringWriter = new StringWriter(); 
      JAXBContext context = JAXBContext.newInstance(rootClass); 
      Marshaller m = context.createMarshaller();  
      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
      m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); 
      m.marshal(rootObj, stringwriter); 
     } 
     catch(Exception e){ 
      // System.out.println (e.getMessage); 
      throw e; 
     } 
    } 
Смежные вопросы