使用 MapStruct 使用 builder 克隆类不会克隆成员变量

问题描述

这是带有构建器的类:

public class ProtoParent {
  public int getA() {
    return a;
  }

  private int a;

  public ProtoParent(ProtoParentBuilder builder) {
    this.a = builder.a;
  }

  public static ProtoParentBuilder builder() {
    return new ProtoParentBuilder();
  }

  public ProtoParentBuilder toBuilder() {
    return new ProtoParentBuilder(this);
  }

  public static class ProtoParentBuilder {
    private int a;

    public ProtoParentBuilder() {

    }

    public ProtoParentBuilder(ProtoParent protoParent) {
      this.a = protoParent.getA();
    }

    public ProtoParentBuilder a(final int a) {
      this.a = a;
      return this;
    }

    private ProtoParent build() {
      return new ProtoParent(this);
    }
  }
}

这是映射器界面:

@Mapper
public interface CompositionMapper {
  ProtoParent map(ProtoParent protoParent);
}

这是自动生成的映射器实现:

public class CompositionMapperImpl implements CompositionMapper {
  public CompositionMapperImpl() {
  }

  public ProtoParent map(ProtoParent protoParent) {
    if (protoParent == null) {
      return null;
    } else {
      ProtoParentBuilder builder = null;
      ProtoParent protoParent1 = new ProtoParent((ProtoParentBuilder)builder);
      return protoParent1;
    }
  }
}

请注意,在 map 方法中,字段 a 没有被复制,并且输入 arg 根本没有被使用。不知道为什么会看到这个问题。有人可以指出我缺少什么吗?

我使用的是 mapstruct 1.4.0-Final。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)