0

最初に、xml 文字列を逆シリアル化するためのコア コードを表示します。

    public XMLClient<T> xmlToClient(String xmlString,T t) throws Exception{
    //according to the generic class's name,insert the name after input tag
    //to make the xstream to know which class is going to deserialize to
        String insertClassName = t.getGenericTypeRecord();
        xmlString.replaceAll("<INPUT>", "<INPUT input."+insertClassName+">");
        XMLClient<T> xmlClient = new XMLClient<T>();
        XStream xs = new XStream(new DomDriver());
        xs.processAnnotations(XMLClient.class);
        xmlClient = (XMLClient<T>)xs.fromXML(xmlString);
        logger.info(xmlString);
        return xmlClient;
    }

T は、スーパー基本クラスから拡張されたクラスです。と同じように

T は baseInputXml を拡張します

しかし、アプリケーションが

xmlClient = (XMLClient<T>)xs.fromXML(xmlString);

XMLClient に一致するプロパティがないことを示すエラー メッセージが表示されます。プロパティはスーパー T クラスには存在しませんが、子 T クラスには存在します。

私の考えを理解していただければ幸いです。これらのgenericTypeとxstreamの変換に本当に困惑しています。ありがとう

4

1 に答える 1

0
xs.processAnnotations(XMLClient.class);

この行は次のように編集する必要があります

xs.processAnnotations(XMLClient.class);
xs.processAnnotations(XMLClientsSuperClass.class);
于 2013-02-07T01:31:32.610 に答える