如何实现特定类型的转换器?

时间:2020-05-26 11:16:15

标签: java mapstruct

我有一个将字符串属性定义为CharSequence的源类(不幸的是)。

以下内容:

@Mapper(source="charSeq", target="str")

给我:

无法将属性“ java.lang.CharSequence charSeq”映射到“ java.lang.String str”。考虑声明/实现一个映射方法:“ java.lang.String map(java.lang.CharSequence value)”

如何实现此映射器方法并将其提供给所有映射器,以便我一劳永逸?

1 个答案:

答案 0 :(得分:1)

创建一个String-CharSequence映射器:

@Mapper
public interface CharSequenceMapper {
    default String map(CharSequence charSequence) {
        return charSequence.toString();
    }

    default CharSequence map(String string) {
        return string;
    }
}

并与您的映射器一起使用:

@Mapper(uses = CharSequenceMapper.class)
public interface MyMapper {
    // some code
}

IMHO CharSequence-String转换应内置到框架中。考虑在https://github.com/mapstruct/mapstruct/issues提交功能请求。