簡體   English   中英

推土機映射類級別是可訪問的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM