首页 文章

模型映射器将Map <String,Object>映射到扩展另一个不适用于列表字段的泛型类的类

提问于
浏览
0

我正在尝试使用模型映射器从Map创建自定义配置对象 . 一切都得到正确映射,除了 fields 属性,它来自Generic超类 .

我的目标对象是

public class ADParserConfig extends CustomParserConfig<ADParserConfigField> {

private String pattern;

public String getPattern() {
    return pattern;
}

public void setPattern(String pattern) {
    this.pattern = pattern;
}

}

这扩展了泛型类CustomParserConfig

public class CustomParserConfig<T extends CustomParserConfigField> {

protected List<T> fields;
protected String timeStampField;

public List<T> getFields() {
    return fields;
}

public void setFields(List<T> fields) {
    this.fields = fields;
}

public String getTimeStampField() {
    return timeStampField;
}

public void setTimeStampField(String timeStampField) {
    this.timeStampField = timeStampField;
}
}

CustomParserConfigField的位置

public class CustomParserConfigField {

protected String name;
protected Integer index;
protected String type;
protected String format;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Integer getIndex() {
    return index;
}

public void setIndex(Integer index) {
    this.index = index;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getFormat() {
    return format;
}

public void setFormat(String format) {
    this.format = format;
}
}

我正在尝试使用以下功能映射Map

ADParserConfig adParserConfig = getConfig(map,ADParserConfig.class);

 public  <T extends CustomParserConfig> T getConfig(Map<String,Object> configObject, Class<T> classType){
    ModelMapper modelMapper = new ModelMapper();

    return modelMapper.map(configObject,classType);

}

除了 fields 之外的所有内容都会正确映射到下面的 Map .

{fields=[{name=timeStamp, type=timestamp, format=dd/mm/yyyy HH:MM:SS a}, {name=logName, type=string}], pattern=(?<timeStamp>\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}:\d{2}\s[AMPMampm]{2})?\s(LogName=(?<logName>[\w\s\W]+))?\sSourceName=(?<sourceName>[\w\s\W]+)\sEventCode=(?<eventCode>[0-9]*), timeStampField=timestamp}

请帮忙 . 为什么问题只发生在字段对象上?我是否需要在映射器配置中指定其他内容?

1 回答

  • 0

    它看起来像一个bug,它已被#370修复

相关问题