如何用Orika映射generics对象?

我正在使用Orika 1.4.5,我想让我的BidirectionalConverter将PaginatedResponse to PaginatedResponse映射PaginatedResponse to PaginatedResponse ,反之亦然。

PaginatedResponse类如下:

 public class PaginatedResponse { private List items; private List orderBy; private PagingResponse paging; public PaginatedResponse(List items, List orderBy, PagingResponse paging) { this.items = items; this.orderBy = orderBy; this.paging = paging; } // Getters } 

所以我希望我的PaginatedResponseCovnerter接受所有的地图调用,其中转换是PaginatedResponse object1 to PaginatedResponse object2 ,我希望object1和object2具有相同的orderBy和paging属性。 所以我尝试这样做:

 public class PaginatedResponseConverter extends BidirectionalConverter<PaginatedResponse, PaginatedResponse> implements MapperAware { private MapperFacade mapper; private T clazz1; private S clazz2; public PaginatedResponseConverter(T clazz1, S clazz2) { this.clazz1 = clazz1; this.clazz2 = clazz2; } @Override public void setMapper(Mapper mapper) { this.mapper = (MapperFacade) mapper; } @Override @SuppressWarnings("unchecked") public PaginatedResponse convertTo(PaginatedResponse source, Type<PaginatedResponse> destinationType) { System.out.println("ConverTo"); PagingResponse paging = source.getPaging(); List sortings = source.getOrderBy(); List items = (List) this.mapper.mapAsList(source.getItems(), this.clazz2.getClass()); return new PaginatedResponse(items, sortings, paging); } @Override @SuppressWarnings("unchecked") public PaginatedResponse convertFrom(PaginatedResponse source, Type<PaginatedResponse> destinationType) { // The same upside down } } 

但问题是我必须使用generics参数注册此自定义转换器,并且这些并不总是相同。 我希望如果我尝试从PaginatedResponse to PaginatedResponse转换为PaginatedResponse to PaginatedResponse PaginatedResponse to PaginatedResponse相同,顺便说一句,我不能这样做:

 converterFactory.registerConverter(new PaginatedResponseConverter(Object.class, Object.class)); 

因为这样所有的PaginatedResponse调用都会进入PaginatedResponseConverter,但是我不知道类中的真实类型,所以当它进入converTo或convertFrom方法时,需要通用参数的确切类来执行mapAsList()方法

你能帮我解决这个问题吗?