Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java modelMapper:ObjectiveTo无法强制转换为类ObjectiveModel_Java_Modelmapper - Fatal编程技术网

Java modelMapper:ObjectiveTo无法强制转换为类ObjectiveModel

Java modelMapper:ObjectiveTo无法强制转换为类ObjectiveModel,java,modelmapper,Java,Modelmapper,映射对象列表时,modelMapper出现问题: Type listType = new TypeToken<List<ObjectiveDto>>() {}.getType(); List<ObjectiveModel> objectiveModels = modelMapper.map(objectiveDtos, listType); 我收到一条错误消息: 2020-11-09 12:42:42.924 DEBUG 14956 ---

映射对象列表时,modelMapper出现问题:

Type listType = new TypeToken<List<ObjectiveDto>>() {}.getType();
List<ObjectiveModel> objectiveModels =
        modelMapper.map(objectiveDtos, listType);
我收到一条错误消息:

2020-11-09 12:42:42.924 DEBUG 14956 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [java.lang.ClassCastException: class fr.domain.dto.ObjectiveDto cannot be cast to class fr.domain.model.ObjectiveModel (fr.domain.dto.ObjectiveDto and fr.domain.model.ObjectiveModel are in unnamed module of loader 'app')]

由于modelmapper强制转换问题,我似乎无法在for循环中迭代列表。

真正的“错误”出现在您说“工作正常”的部分

根据中的示例

这明确地表明,
map(source,Type)
方法返回一个列表,其中包含Javadoc中TypeToken-String的泛型类型(因此列表中的对象),在您的例子中是ObjectiveDto。因此,的
中的异常是正确的

由于
map(objectsource,Type destinationType)
的泛型签名没有将返回类型绑定到
Type
参数,因此分配给List时没有返回编译错误(当然,也不会有运行时错误,因为由于类型擦除,所有返回的都是List)。因此,您应将原来的任务更改为:

Type listType = new TypeToken<List<ObjectiveDto>>() {}.getType();
List<ObjectiveDto> objectiveModels =
    modelMapper.map(objectiveDtos, listType);
Type listType=new-TypeToken(){}.getType();
列出objectiveModels=
map(objectiveDtos,listType);

Type listType=new-TypeToken(){}.getType();
列出objectiveModels=
map(objectiveDtos,listType);

下一行已完成500个内部\u服务器\u错误对不起,我不明白-下一行来自什么?在我的日志中,我有一条cast错误消息,一旦我进入循环,我直接有一个500个错误是正确的-您的列表包含ObjectiveTo对象,因为这是您在TypeToken中指定的。如果您希望它包含ObjectiveModel对象,请按照上面的“或”示例更改您的TypeToken。
Type listType = new TypeToken<List<ObjectiveDto>>() {}.getType();
List<ObjectiveDto> objectiveModels =
    modelMapper.map(objectiveDtos, listType);
Type listType = new TypeToken<List<ObjectiveModel>>() {}.getType();
List<ObjectiveModel> objectiveModels =
    modelMapper.map(objectiveDtos, listType);