当前正在编写一些拦截器,将某些请求模型转换为另一个模型。我为所有不同类型的请求提供了映射,但是由于它处于拦截器级别,因此我为请求模型获得了一个Java对象。我为对象添加了一个映射,这样我就可以传递在拦截器中获得的对象,而不是将其强制转换为我具有映射关系的一种类型,但是,它不起作用,它没有映射任何字段。足够有趣的是,当我弄乱了映射的定义顺序时,它确实起作用了,但是并不一致,所以我不确定如何使它起作用。
public ArrayList<Student> SortOnCGPA(ArrayList<Student> stu){
Student sorStu[] =new Student[stu.size()];
Iterator it = stu.iterator();
int i = 0;
while(it.hasNext()){
sorStu[i] = new Student((Student)it.next());
i++;
}
Arrays.sort(sorStu, new StuDescend());
stu = new ArrayList(Arrays.asList(sorStu));
return stu;
}
答案 0 :(得分:2)
我认为不可能
但是您可以在映射类中实现
public abstract class MyMapper {
@Mappings({
@Mapping(source = "myField", target = "myOtherField")
})
abstract NiceModel toLoggableEntity(RequestModel1 request);
@Mappings({
@Mapping(source = "myField2", target = "myOtherField")
})
abstract NiceModel toLoggableEntity(RequestModel2 request);
NiceModel toLoggableEntity(Object request) {
if (request instanceof RequestModel1) {
return toLoggableEntity((RequestModel1) request);
}
if (request instanceof RequestModel2) {
return toLoggableEntity((RequestModel2) request);
}
//manage this case
return null;
}
}