我有一个有构造函数的类:
public ContEmpirical(double xs[], double fs[]) {
Check.check(xs.length == fs.length + 1 && fs.length > 0,
"Empirical distribution array mismatch");
this.xs = new double[xs.length];
this.xs = xs;
this.cs = new double[xs.length];
double fTotal = 0.0;
for (int i = 0; i < fs.length; i++)
fTotal += fs[i];
cs[0] = 0;
for (int i = 0; i < fs.length; i++)
cs[i + 1] = cs[i] + fs[i] / fTotal;
}
属性:
private double xs[], cs[];
private double fs[]; // this attribute i added to make castors life easier since it always wants to map constructor arg to class attribute.
我拥有的映射文件是:
<class name="tools.ContEmpirical">
<description xmlns="">
Mapping for class tools.ContEmpirical
</description>
<map-to xml="ContEmpirical"/>
<field name="xs" type="double" collection="array" set-method="%1" get-method="getXs" required="true">
<bind-xml node="attribute"/>
</field>
<field name="fs" type="double" collection="array" set-method="%2" get-method="getFs" required="true">
<bind-xml node="attribute"/>
</field></class>
然而,当我尝试编组ContEmpirical的实例时,我得到了这个XML:
<ContEmpirical xs="0.2 0.3 0.4 0.8"/>
我真的应该得到这样的东西:
<ContEmpirical xs="0.2 0.3 0.4 0.8" fs="0.2 0.3 0.4 0.8"/>
映射中是否缺少某些内容?
答案 0 :(得分:0)
你可以发布ContEmpirical类吗?您是否正在将fs数组初始化为字段级别的某些内容?
更新:我必须遗漏一些东西。你说你在输出xml中“期望”fs。但是这个类有一个名为fs的属性吗?从您发布的构造函数代码中,fs永远不会在内部分配(有一个名为fs的参数,虽然用于计算cs)。
实际上,你的对象只有一个xs和cs变量,如果你为cs声明映射你应该得到cs。