XML2Java 映射 - 处理继承



我在论文中遇到了一个问题,我希望有人可以帮助我。问题如下,我正在使用一个大型源代码(一个已经制作的库),并希望通过输入文件的规范对某些类进行一些 xml 绑定.xml。下面是代码的一部分结构示例:

interface IObject extends Writeable, PrimitiveSinkable{
   //methods, fields...
}
interface IMessage extends IObject{
//methods, fields....
}
interface IRequestMessage extends IMessage, IObject{
//methods, fields...
}
class RequestMessageVer10 implements IRequestMessage{
//methods, fields....
}
class RequestMessageVer11 implements IRequestMessage{
//methods, fields....
}

所以,我想要的是通过一个输入.xml文件通过版本属性从接口 IRequestMessage 映射到正确的类,下面是假装 xml 的示例:

<requestmessage version=10>
//other fields...
</requestmessage>
<requestmessage version=11>
</requestmessage>

有可能做到这一点吗?如果是这样,如何?别的,我怎么能规避呢?

此致敬意

迪奥戈·杜阿尔特

假设您已经解析了 xml 文件并有一个包含该信息的版本变量,您可以像这样使用 Class.forName(String):

IRequestMessage message = (IRequestMessage)Class.forName("RequestMessageVer"+version).newInstance();

如果需要将参数传递给类构造函数,则可以找到特定的构造函数并使用它。下面是一个示例,该构造函数查找将字符串和整数作为参数的 RequestMessageVer11 类构造函数:

IRequestMessage message = (IRequestMessage)Class.forName("RequestMessageVer"+version).getConstructor(String.class, Integer.class).newInstance("String parameter", 42);

如果您需要解析XML文件,我建议您使用一个简单的教程。

希望这有帮助。

最新更新