2011-06-17 75 views
-1

我從Modello .mdo文件獲得以下配置片段。如何指定我想在Modello中使用Set而不是List?

<field> 
    <name>archetypes</name> 
    <association> 
    <type>Archetype</type> 
    <multiplicity>*</multiplicity> 
    </association> 
    <description>List of Archetypes available in this catalog.</description> 
</field> 

這將生成以下猙獰代碼:

/** 
* Field archetypes. 
*/ 
private java.util.List<Archetype> archetypes; 

進一步回落:

/** 
* Method getArchetypes. 
* 
* @return List 
*/ 
public java.util.List<Archetype> getArchetypes() 
{ 
    if (this.archetypes == null) 
    { 
     this.archetypes = new java.util.ArrayList<Archetype>(); 
    } 

    return this.archetypes; 
} //-- java.util.List<Archetype> getArchetypes() 

我如何告訴MODELLO使用java.util.Set,而不是java.util.Listjava.util.HashSet代替java.util.ArrayList

回答

1

顯然,<field/>上有一個<type/>元素,您可以將其設置爲Set,即使文檔中只提到了本機類型。

<field> 
    <type>Set</type> 
    <name>archetypes</name> 
    <association> 
    <type>Archetype</type> 
    <multiplicity>*</multiplicity> 
    </association> 
    <description>List of Archetypes available in this catalog.</description> 
</field> 

,你控制什麼Set實現了<default/>元素,它默認使用java.util.HashSet

<default> 
    <key>java.util.Set</key> 
    <value>new java.util.TreeSet&lt;?&gt;()</value> 
</default> 

當然,這設置了所有Set類型的類的默認,但我離題了,我有足夠的瞭解MODELLO知道我不想再知道了。

+0

這是否生成類型爲Set 的字段? – ditkin 2011-06-17 03:25:13

+0

是的,並且它使用'HashSet '作爲實現類,它可以被''元素覆蓋以使其使用'TreeSet',這正是我所需要的。我絕對不會在我負責的項目中使用這個Modello的東西,它可以很容易地編寫和完成代碼的更多層次的間接性。 – 2011-06-17 06:10:19

相關問題