2013-03-21 3 views
2
public Item marshallItem(String xml) { 
    // TODO Auto-generated method stub 
    XStream xstream = new XStream(); 

    xstream.alias("Item", Item.class); 

    return (Item) xstream.fromXML(xml); 
} 

линия № 3:Как я могу сделать код кода общим?

"Item" и Item.class являются жёстко значение.

Если у меня есть marshall Закажите xml, тогда мне нужно написать новый метод или условие else- .

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

ответ

4

Что-то, как это будет делать то, что:

public <T> T marshallItem(String xml, Class<T> clazz) { 
    XStream xstream = new XStream(); 
    xstream.alias(clazz.getSimpleName(), clazz); 
    return (T) xstream.fromXML(xml); 
} 

Вызов этого метода:

Item info = marshallItem("yourXml", Item.class); 
+0

Спасибо .... Я стараюсь с clazz как String ... У меня проблема с именем пакета. Я хочу сделать это простым .. Class.forName ('clazz'). GetClass() Ваш ответ прост и лучше. – Shashi

1

Это сделать:

public <T> T marshall(String xml, Class<T> type) { 
    XStream xstream = new XStream(); 
    xstream.alias(type.getSimpleName(), type); 
    return (T) xstream.fromXML(xml); 
} 

Надеюсь, это поможет!