Posted on 2005-11-19 10:59
canonical 閱讀(350)
評論(0) 編輯 收藏 所屬分類:
Witrix開發平臺
java中最常用的數據結構類型是Map和List,
它們也是Container的兩種基本模式,一個是根據特征值定位,一個是根據地址定位。
它們共同的一個特征是表達了數據之間的直接的,短程的一種相關性。另一種常見的數據結構Tree則表達了數據之間的一種長程的關聯:根節點與其所有層次上
的子節點之間都存在著關聯。 文件系統,組織機構, XML文檔等都可以對應為Tree數據結構。在描述樹形結構的時候,我們經常使用XML文件,
但是XML文件在程序中操縱起來并不方便,這其中的一個重要原因是XML是面向文檔的,即操縱XML的API返回的和使用的都只能是文本字符串,而不能直
接使用程序中常見的其他數據結構。在witrix平臺中操縱Tree結構的標準接口是TreeNode類,它的設計是面向應用的,即節點的屬性值為
Object類型而不是String類型。
Tree由三部分組成: 屬性,值, 子節點
class TreeNode implements IVariant{
List getChildren();
int getChildCount();
TreeNode child(int index);
/** 當name對應的節點不存在時將會自動創建該節點 */
TreeNode child(String name);
/** 當name對應的節點不存在時返回null */
TreeNode existingChild(String name);
Map getAttributes();
IVariant attribute(String name);
void setAttribute(String name, Object attrValue);
}
TreeNode.attribute(name)返回的是IVariant接口,例如
boolean defaultValue = true;
boolean b = node.child("subA").attribute("attrB").booleanValue(defaultValue);
TreeNode本身也是IVariant接口的一個實現,例如
int i = ode.intValue();
通過使用IVariant接口,我們實現了強類型的java語言與弱類型的xml文本之間的自然轉換,在轉換過程中還可以指定缺省值,這些都極大的簡化了實際應用時的編碼量。