Картографические массивы Castor - PullRequest
0 голосов
/ 06 марта 2010

У меня есть класс с конструктором:

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"/>

Есть ли что-то, что я упускаю из сопоставления?

1 Ответ

0 голосов
/ 06 марта 2010

Можете ли вы опубликовать класс ContEmpirical? Вы инициализируете массив fs чем-то на уровне поля?

ОБНОВЛЕНИЕ: Я должен что-то упустить. Вы сказали, что ожидаете "fs" в выходном XML. Но есть ли у класса атрибут с именем fs? Из кода конструктора, который вы опубликовали, fs никогда не присваивается внутренне (хотя есть параметр fs, который используется для вычисления cs).

Так что на самом деле ваш объект имеет только переменные xs и cs, и в вашем xml, если вы объявите отображение для cs, вы должны получить cs.

...