java 中具有多个字段的通用属性

generic attribute in java with multiple fields

我有一个问题。你知道我如何使用具有不同通用属性实现的相同字段吗?

我有一个 modelMapper 接口,我用它来概括将要映射的对象类型

public interface IMapper<S, D> {

D map(S src, Class destination);
}

我也有这个接口的这个实现:

@Component
public class ModelMapperImpl<S,D> implements IMapper<S,D> {

    @Autowired
    private ModelMapper mapper;

    @Override
    public D map(S src, Class destination) {
        return (D) mapper.map(src, destination);
    }
}

问题是这样的,我需要为每个映射在我的 class 中设置一个字段,我认为这不是一个好的做法,我正在搜索是否有一种方法只有一个通用字段我所有的映射类型

@Service
public class UserService {

    private IMapper<AddressDTO, Address> mapperAddress;

    private  IMapper<UsersDTO, Users> mapperUser;  // i want to have only one IMapper field

有办法吗?谢谢大家的帮助。

我假设您正在努力简化映射库的更改(如果需要,从 ModelMapper 迁移到其他库)。然后你可以使方法通用,而不是 class.

public interface IMapper {
  
  <S, D> D map(S src, Class<D> destination);
}

实现:

@Component
public class ModelMapperImpl implements IMapper {

  @Autowired
  private ModelMapper mapper;

  @Override
  public <S, D> D map(S src, Class<D> destinationClass) {
    return mapper.map(src, destinationClass);
  }
}

现在您的服务中只需要一个 IMapper

@Service
public class UserService {

  @Autowired
  private IMapper mapper;
}