当前位置: 首页 > 知识库问答 >
问题:

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

东门仲卿
2023-03-14

我有个问题。您知道如何在不同的通用属性实现中使用相同的字段吗。

我有一个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);
    }
}

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

@Service
public class UserService {

    private IMapper<AddressDTO, Address> mapperAddress;

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

有没有办法做到这一点?谢谢你们的帮助。

共有1个答案

卢俭
2023-03-14

我假设您正在尝试使更改映射库变得容易(如果需要的话,可以从ModelMapper移动到其他对象)。然后可以将方法设置为泛型,而不是类。

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

Impl公司:

@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;
}
 类似资料:
  • 问题内容: 我有一个包含三个字段(所有字符串类型)的“报告”对象列表- 我有一个排序代码,就像 由于某种原因,我没有排序顺序。一个建议在字段之间放置空格,但是为什么呢? 你认为代码有什么问题吗? 问题答案: 你认为代码有什么问题吗? 是。为什么在比较它们之前将三个字段加在一起? 我可能会做这样的事情:(假设字段按照你希望对其进行排序的顺序)

  • 问题内容: 我有5个字段的对象: 要排序的的我写了下面。 这是在具有多个要比较的对象的对象上实现的正确方法吗? 问题答案: 您的方法可能是正确的,但是效率低下(不必要地调用equals)并且难以阅读。可以这样重写: 更好的方法是使用库方法将所有这些逻辑抽象掉,这样您就不必考虑它了。例如使用apache.commons.lang CompareToBuilder

  • 问题内容: 如何以角度同时使用多个字段进行排序?例如,先按组再按子组 我想显示为 组:子组 1-1 1-2 1-20 2-1 2-10 2-11 问题答案: 请看这个: http://jsfiddle.net/JSWorld/Hp4W7/32/

  • 我只看到两种方法: 将所有字段设置为受保护(或包可见性) 为所有字段生成50个getter 创建50个委托方法来获取这些字段的状态,而不是整个对象的状态 在正常情况下,我会选择最后一个(尽管我真的不想仅仅出于测试的原因而改变界面)。但是在我的类中编写50个新方法只是为了测试真的有意义吗?在这种情况下,将字段设置为受保护的不是更好吗,因为有这么多方法,类会变得不清楚? 注意。反射是我想使用的最后一个

  • 下面是我想尝试使用java收集器编写的代码。 给定一个人的2个属性(firstname和lastname),我想获得一个包含唯一的firstname或lastname作为键的地图,以及相应的人的列表。 和填充映射的代码: 我不知道如何将firstname或lastname作为键(不像Java8中的Group by multiple field names)。我一定要写我自己的收藏家吗?

  • Elasticsearch允许通过其“more like this”(MLT)查询搜索类似文档。我正试图更好地理解和调整查询,以便更好地找到类似的文档。 在试验它时,我发现具有多个字段的单个MLT查询的结果与具有每个字段的多个MLT查询的布尔值产生不同的结果。以下样本(截断): 具有多个字段的单个MLT查询 具有单个字段的多个MLT查询 为什么会发生这种情况? 我知道MLT查询会将单个查询中列出的