微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。