首页 > 解决方案 > BeanIO 中 int 字段的默认填充是什么?

问题描述

如果未指定任何内容,BeanIO中int字段的默认填充是什么?例如在以下情况下:

在这里,我没有提到薪水字段的填充,那么当编组到流时的值是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>

标签: marshallingpaddingbean-io

解决方案


给定您的mapping.xml文件,当输出长度小于 6 位时,将使用空格填充输出。

使用 and 的输入firstname = "Learner"salaray = 8888将产生以下输出:

Learner     8888

Learner在 firstName ( ) 的结尾和薪水的第一位数字 (8) 的开头之间总共有 5 个空格。前 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

推荐阅读