最初に、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の変換に本当に困惑しています。ありがとう