2016-04-27 193 views
0

我在論文期間遇到了一個問題,我希望有人能幫助我。問題在於,我正在處理一個大的源代碼(一個已經創建的庫),並希望通過input.xml文件的規範來對某些類執行一些xml綁定。這裏有一個例子如何代碼的一部分結構:XML2Java映射 - 處理繼承

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向右類映射,在這裏是假裝的XML的一個例子:

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

是否有可能實現這一目標?如果是這樣,怎麼樣?別的,我怎麼能繞過它?

最好的問候,

迪奧戈·杜阿爾特

+0

只是有點迂腐,但類實現接口。 – gfelisberto

+0

你是對的!沒有看到錯誤,謝謝 –

+0

我不確定你想要達到什麼目的。我假設你有配置的xml,並想創建在那裏聲明的類的實例。是嗎? – gfelisberto

回答

0

假設你已經在解析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文件,我推薦一個簡單的tutorial

希望這會有所幫助。

+0

我認爲你錯過了這一點。我沒有解析XML文件。我想要的是解析並映射到相應的類。 –