java 使用MapStruct时,当存在多个构造函数时,会出现“存在模糊的构造函数”错误。

bluesky1年前 ⋅ 37 阅读

ChatGPT的回答仅作参考:

这是因为 MapStruct 不知道应该使用哪个构造函数来创建目标对象。解决这个问题的方法是在目标对象的构造函数上使用 `@MappingTarget` 注解来指定使用哪个构造函数。例如:

```java
@Mapper
public interface MyMapper {
    @Mapping(target = "name", source = "sourceName")
    @Mapping(target = "age", source = "sourceAge")
    void mapToPerson(Source source, @MappingTarget Person person);
}

public class Person {
    private String name;
    private int age;

    public Person(String name) {
        this.name = name;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
```

在上面的例子中,`Person` 类有两个构造函数,一个只接受一个字符串参数,另一个接受一个字符串参数和一个整数参数。在 `MyMapper` 接口中,我们使用 `@MappingTarget` 注解来指定使用第二个构造函数来创建 `Person` 对象。这样,MapStruct 就知道应该使用哪个构造函数来创建目标对象,就不会出现“存在模糊的构造函数”错误了。

全部评论: 0

    相关推荐