【发布时间】:2015-02-26 18:43:33
【问题描述】:
我有一个beanio 的固定长度记录 bean,如下所示:
@Record
public class RecordBean {
@Field(at = 0, length = 3)
private String field1;
@Field(at = 3, length = 10)
private String field2;
//etc
}
现在我想将该 bean 也用作我的应用程序中的传输对象,然后使用 beanio 将其解组到 fixedLength 记录。
问题:当我访问RecordBean 的字段时,我永远无法确定该字段是否可能是null,因为我自己创建了对象:
RecordBean r = new RecordBean();
r.getField1(); //may be null
问题:我可以使用beanio 以默认值初始化bean 吗?例如,一个空字符串,其长度与@Field 注释中给出的确切长度一致?
我可以将每个 getter 包装在 StringUtils.defaultString(value) 中作为一种解决方法,但这就是样板代码。
【问题讨论】:
-
我知道我可以在
marshalling期间控制null的值。但是我想在编组之前初始化字段,因为我想使用对象本身,并且如果我找到一种方法来预初始化字段的长度,则不必对每个属性执行空检查。 -
beanio 是否绝对有必要为您执行此操作?有一种非常简单的方法可以自行实现。
-
我看到了您的编辑。这就是我所说的。我看不出在 getter 中添加 StringUtils.defaultString(value) 有什么问题。它很干净。它在一个地方(每个字段)。无需在您的客户端代码周围添加空检查。唯一的区别是,您现在将其放在 getter 中,而不是让注释定义默认行为。
-
是的。您可以使用此解决方案,如果有人确实回答了您的问题,那么转向注释应该不是一项艰巨的工作。是的,返回一个空的 ArrayList 确实有意义..