2011-06-17 84 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

相关问题