我正在使用推土机框架来克隆我的对象。我希望推土机框架在不使用 getter 和 setter 的情况下克隆数据,为此我在类级别设置 is-accessible 属性。但这似乎不起作用。当我在字段级别设置 is-accessible 时,它工作正常。
BeanMappingBuilder builder = new BeanMappingBuilder(){
@Override
protected void configure() {
mapping(type(A.class).accessible(true),type(A.class).accessible(true)).exclude("field1").exclude("field2");
}
};
m.addMapping(builder);
我想要使用 is-accessible 的原因是因为我在类 A 中有一个字段声明为
private SortedSet<String> foo;
但吸气剂就像
public Collection<String> getFoo()
{
return foo;
}
我认为推土机无法找到 getter,因为它为字段 foo 返回不同的类型。有人可以告诉我这是推土机中的错误还是我做错了什么?
在此先感谢您的帮助!!
请注意,如果 Dozer 在源类中找不到 getter 并在目标类中找不到 setter,则会抛出错误。
Afaik,数据类型的变化应该不重要,因为它使用反射。
要回答您的第一个问题,与其在类级别设置 is-accessible ,不如仅公开您需要的字段风险较小。例如:
DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
dozerBeanMapper.addMapping(getBeanMappingBuilder("fieldName",
SourceClassName.class,
DestClassName.class));
protected BeanMappingBuilder getBeanMappingBuilder(final String fieldName,
final Class typeA,
final Class typeB) {
return new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(typeA
, typeB).fields(
field(fieldName).accessible(true), field(fieldName).accessible(true));
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)