我在论文中遇到过问题,希望有人可以帮助我。问题如下,我正在处理一个大型源代码(一个已经建立的库),并希望通过input.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....
}
所以,我想要的是通过一个input.xml文件从接口IRequestMessage映射到正确的类通过version属性,这里是假装xml的一个例子:
<requestmessage version=10>
//other fields...
</requestmessage>
<requestmessage version=11>
</requestmessage>
有可能实现这一目标吗?如果是这样,怎么样?另外,我怎么能绕过它?
最诚挚的问候,
Diogo Duarte
答案 0 :(得分:0)
假设您已经解析了xml文件并且拥有包含该信息的版本变量,您可以像这样使用Class.forName(String):
IRequestMessage message = (IRequestMessage)Class.forName("RequestMessageVer"+version).newInstance();
如果需要将参数传递给类构造函数,可以找到特定的构造函数并使用它。下面是一个示例,它找到RequestMessageVer11类构造函数,该构造函数将String和Integer作为参数:
IRequestMessage message = (IRequestMessage)Class.forName("RequestMessageVer"+version).getConstructor(String.class, Integer.class).newInstance("String parameter", 42);
如果您需要解析XML文件,我建议使用简单的tutorial。
希望这有帮助。