利用反射從 XML 構造 VO

2021-03-31 15:01:03 字數 2204 閱讀 6192

反射使您的程式**能夠接入裝載到 jvm 中的類的內部資訊,允許你編寫與執行時,而不是源**中選定的類協作的**。這使反射成為構建靈活的應用的主要工具。

首先觀察下面的 xml 檔案:

<?xml version = '1.0' encoding = 'gb2312'?>

300200500009

20050112測試

200543030000010

20010112標段2

監督備案

該 xml 檔案描述了乙個標段當前流程資訊,接下來把它翻譯成 vo :

public class bidprocess implements serializable

/*** @param functionname 要設定的 functionname。

*/public void setfunctionname(string functionname)

/*** @return 返回 itemname。

*/public string getitemname()

/*** @param itemname 要設定的 itemname。

*/public void setitemname(string itemname)

/*** @return 返回 itemno。

*/public string getitemno()

/*** @param itemno 要設定的 itemno。

*/public void setitemno(string itemno)

/*** @return 返回 subitemname。

*/public string getsubitemname()

/*** @param subitemname 要設定的 subitemname。

*/public void setsubitemname(string subitemname)

/*** @return 返回 subitemno。

*/public string getsubitemno()

/*** @param subitemno 要設定的 subitemno。

*/public void setsubitemno(string subitemno)

}從 xml 構造 vo ,放入 list 中,**如下:

public class vofactory {

// 構造出的物件集合

private arraylist list=new arraylist();

/** 利用反射獲取結果集  */

public list parse(serializable source, string xml){

try{

//構造 xml 輸入流

bytearrayinputstream ba=new bytearrayinputstream(xml.getbytes());

//dom4j 初始化

saxreader reader = new saxreader();

document document = reader.read(ba);

element root = document.getrootelement();

//獲得類物件

class c = source.getclass();

//獲得建構函式

constructor cons=c.getdeclaredconstructors();

constructor con=cons[0];

//獲得類中的字段

field fields = c.getdeclaredfields();

//設定訪問private欄位的許可權

accessibleobject.setaccessible(fields,true);

//以特定名稱獲得 xml 元素列表

list lis = root.elements("arsubitem");

//"arsubitem"元素下的子元素

for(int i=0;i

通過對以上**原形進行修改,可實現分頁、結果集巢狀等需求。在寫作本文時,我偶然發現了 jakarta ***mons beanutils 也提供了類似的功能。那麼本文就作為乙個了解反射的範例罷了。

利用反射機制修改構造器的許可權

通過反射,可以獲取並修改構造器的許可權 定義乙個懶漢模式 懶漢模式 class lazyman public static lazyman getinstance return instance 開始修改 lazyman instance lazyman.getinstance lazyman in...

C 筆記 利用XML檔案構建反射表機制

在設計程式時,無論是介面或是後台 我們通常都想留給使用者乙個較為簡單的介面。而我在參與封裝語音卡開發函式包的時候,發現各種語音卡的底層函式的介面都是各種整形變數標記值,使用起來極為不變。於是就理解了前輩所寫的 中,利用xml構建反射表機制的初衷。下面我就以某一種語音卡所能相容的語音格式為例,將反射表...

C 配合利用XML檔案構建反射表機制

在設計程式時,無論是介面或是後台 我們通常都想留給使用者乙個較為簡單的介面。而我在參與封裝語音卡開發函式包的時候,發現各種語音卡的底層函式的介面都是各種整形變數標記值,使用起來極為不變。於是就理解了前輩所寫的 中,利用xml構建反射表機制的初衷。下面我就以某一種語音卡所能相容的語音格式為例,將反射表...