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;
}
我有一个问题。你知道我如何使用具有不同通用属性实现的相同字段吗?
我有一个 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;
}