BeanIO中int字段的默认填充是什么?

时间:2019-03-21 04:00:50

标签: marshalling padding bean-io

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

在这里,我没有为 salary (薪金)字段提到填充,那么当编组为salary=8888流式传输时,值是什么? 是008888还是8888(两个空格后接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 :(得分:0)

它实际上是8888__(下划线是空格字符)

  

默认情况下,固定长度的字段将左对齐并用空格[1]填充

答案 1 :(得分:0)

鉴于您的mapping.xml文件,当输出少于6位数字时,空格将用于填充输出。

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

Learner     8888

firstName(Learner)的末尾与薪水的第一个数字(8)的开头之间总共有5个空格。前3个空格是firstName字段的填充,以使其长度为10。接下来的2个空格是salaray字段的填充。空格显示在salaray字段的前面,因为您指定了它应该右对齐。

如果将其保留为默认值,则salary字段将保持对齐,这是所有字段的默认值,而不指定justify属性。那么这两个空格将位于salary字段的值之后。

为了更好地查看它,让我们将mapping.xml文件更改为使用星号(*)填充firstName字段的值,并使用零(0)填充{{1 }}字段。

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>