2015-09-08 23 views
-5

我有兩種類型的XML:如何將多態性應用於xml反序列化?

<exec><cmd>STATISTIC</cmd><param></param></exec> 

<exec><cmd>FILE_TO_CLIENT</cmd><param><filePath>"/opt/tst"</filePath><msg>"ls- la"</msg></param></exec> 

我需要通過它們的功能可能返回兩種類型的類對象的

class Statistic { 
} 

class FileToClient 
{ 
    String msg; 
    String filePath; 
} 

如果消息是statistic型 - 無字段需要。如果它是file_to_clientmsgfilePath字段應該從XML填充。

我應該如何安排我的類層次結構,使解串器功能可以同時返回類型的對象?

回答

2

首先的.... java中總是啓動中的類UPPERCASE
其次你的問題不太清楚,但我會盡量解釋基本繼承。


如果你想這兩個類是同一類型的相同的方法來恢復,你需要有一個共同的Parent類。 Java中的所有類都從Object類繼承,但更好,如果你定義自己的父母是這樣的:

// parent class common to others 
class YourParent { 
    // put here any common attributes for child classes 
} 

然後,讓你的子類從父擴展:

class Statistic extends YourParent 
{ 
} 

class FileToClient extends YourParent 
{ 
String msg; 
String filePath; 

} 

最後,您可以同時使用FileToClientStatistics作爲YourParent類。

例如,如在方法返回類型:

public YourParent doSomething() { 
    if (something) 
     FileToClient f = // 
     return f; // valid 
    } else { 
     Statistic s = // 
     return s; // valid also!!! 
    } 
}