曾经有人说过,不要去继承一个已经实现好的类,因为涉及到覆写问题。那我就在父类那里写好公用部分的方法,然后在子类中super一下就好啦。
demo如下:
1.父类:
public abstract class TransferMessage extends Message {
private static Logger log= Logger.getLogger(TransferBean.class.getName());
protected TransferMessage(){}
/**
* 将Xml格式字符串转换成TransferMessage
*
*/
protected TransferMessage(String xmlMessage){
Document doc=null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
try {
db = dbf.newDocumentBuilder();
try {
doc = db.parse(new InputSource(new StringReader(xmlMessage)));
setLanguage(XmlUtil.getElementValue("language", doc));
setBatchID(XmlUtil.getElementValue("batchID", doc));
setTransPatches(XmlUtil.getElementValue("transPatches", doc));
String transSum = XmlUtil.getElementValue("transSum", doc);
if(transSum != null && transSum != ""){
setTransSum(new BigDecimal(transSum));
}
} catch (SAXException e) {
e.printStackTrace();
log.info("没有传进xml格式字符串内容,很可能是网络不通导致没有交易结果返回;"+e);
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
} 2.子类 public class QueryAccountResponseMessage extends TransferMessage {
public QueryAccountResponseMessage(){}
public QueryAccountResponseMessage(String xmlMessage,String batchID){
super(xmlMessage);
setResponseTime(XmlUtil.getElementValue("respondTime", doc));
//这里的doc是父类的 ResponseStatus status = new ResponseStatus();
status.setResponseCode(XmlUtil.getElementValue("respondCode",doc));
status.setResponseInfo(XmlUtil.getElementValue("respondInfo",doc));
setResponseStatus(status);
setUserID(XmlUtil.getElementValue("userID", doc));
List<BalanceAccountResponseRecord> list = new ArrayList<BalanceAccountResponseRecord>();
NodeList nodeList = doc.getElementsByTagName("balanceRespondRecord");
if(nodeList != null && nodeList.getLength() != 0){
for(int i=0; i < nodeList.getLength(); i++){
BalanceAccountResponseRecord record = new BalanceAccountResponseRecord();
NodeList nodes = nodeList.item(i).getChildNodes();
if(nodes != null && nodes.getLength() != 0){
record.setClientPatchID(XmlUtil.getElementValue("clientPatchID", nodes));
record.setAccountNo(XmlUtil.getElementValue("accountNo", nodes));
record.setReturnCode(XmlUtil.getElementValue("returnCode", nodes));
record.setReturnInfo(XmlUtil.getElementValue("returnInfo", nodes));
record.setAccountBalance(XmlUtil.getElementValue("accountBalance", nodes));
record.setAvailableBalance(XmlUtil.getElementValue("availableBalance", nodes));
}
list.add(record);
}
setTransferResponseRecord(list);
}
}

被折叠的 条评论
为什么被折叠?



