Какое дополнение по умолчанию для поля int в BeanIO? - PullRequest
0 голосов
/ 21 марта 2019

Что такое заполнение по умолчанию для поля int в BeanIO, если ничего не указано? Например, в следующем случае:

Здесь у меня нет упомянутого отступа для поля salary , так что бы было значением при маршалинге для потока для salary=8888? Это будет 008888 или 8888 (2 пробела, за которыми следует 8888)?

  <stream name="employeeFile">
    <record name="employee" class="example.Employee">
      <field name="firstName" length="10" />
      <field name="salary" length="6" justify="right" />
    </record> 
  </stream>

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Учитывая ваш файл mapping.xml, пробелы будут использоваться для заполнения вывода, если его длина меньше 6 цифр.

Использование ввода firstname = "Learner" и salaray = 8888 приведет к следующему выводу:

Learner     8888

Всего 5 пробелов между окончанием firstName (Learner) и началом первой цифры зарплаты (8). Первые 3 пробела - это заполнение поля firstName, чтобы сделать его длиной 10. Следующие 2 пробела - это заполнение поля salaray. Пробелы появляются перед полем salaray, поскольку вы указали, что оно должно быть выровнено по правому краю.

Если оставить значение по умолчанию, поле salary будет оставлено выровненным, по умолчанию для всех полей без указания атрибута justify. Тогда 2 пробела будут после значения поля salary.

Чтобы увидеть его лучше, давайте изменим файл mapping.xml, чтобы использовать звездочку (*) для заполнения значения поля firstName и ноль (0) для заполнения поля salary.

<stream name="employeeFile" format="fixedlength">
  <record name="employee" class="example.Employee">
    <field name="firstName" length="10" padding="*"/>
    <field name="salary" length="6" justify="right" padding="0"/>
  </record>
</stream>

Это дает следующий вывод:

Learner***008888
0 голосов
/ 22 марта 2019

Фактически это будет 8888__ (символ подчеркивания - пробел)

По умолчанию поля фиксированной длины выравниваются по левому краю и дополняются пробелами [ 1 ]

...