marshalling - 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>
解决方案
给定您的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
推荐阅读
- c# - 我如何使它在 UI 打开时我的角色/相机停止移动?
- jquery - Net Core 控制器未接收到 ajax 数据
- c - Execv 系统调用程序没有得到争论
- python - 我如何从 Opencv 获取最新的输出文件
- postman - 为什么 Postman 会忽略变量中的协议和端口号?
- list - python 3,比较两个列表的元素
- python - 如何在python中将多个变量写入.txt文件?
- swift - 如何修复 macOS 的 AppStore 拒绝“您的应用请求管理员访问权限才能运行”
- java - 如何将 Mockito.spy 与匹配器一起使用?
- java - Java 应用程序无法使用 EJBCA 库连接到 https Web 服务