[英]Dozer Mapping Class level is-accessible
我正在使用dozer框架來克隆我的對象。 我希望dozer框架克隆數據而不使用getter和setter,為此我在類級別設置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;
}
我認為推土機無法找到吸氣劑,因為它為場foo返回了不同的類型。 有人能告訴我這是否是推土機中的錯誤或是我做錯了什么?
在此先感謝您的幫助!!
請注意,如果Dozer在源類中找不到getter而在目標類中找不到setter,則會拋出錯誤。
Afaik,數據類型的變化應該無關緊要,因為它使用反射。
要回答您的第一個問題,而不是在類級別設置是可訪問的,只暴露您需要的字段可能風險較小。 例如:
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));
}
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.