简体   繁体   English

ModelMapper:如何 map 到已知具体类型的通用实例列表

[英]ModelMapper: How to map to a List of generic instances of known concrete type

I want to convert with the ModelMapper a List<> to a List<T> knowing the exact java.lang.Class of T .我想用ModelMapperList<>转换为List<T>知道确切的java.lang.ClassT But the ModelMapper keeps only instantiating the common parent class of T...但是 ModelMapper 只保持实例化 T 的公共父 class ...

for your context: I want to convert a list of DTO to a list of Domain, but as I do it in every Service class I extracted it in a generic abstract Service.对于您的上下文:我想将 DTO 列表转换为域列表,但是正如我在每个服务 class 中所做的那样,我将它提取到通用抽象服务中。

public class BaseClass {}
public class SubClass1 extends BaseClass {}

public <T extends BaseClass> List<T> getList(Class<T> specificClass) {
    ...
    Type listType = new TypeToken<List<T>>(){}.getType(); // here problem

    List<T> responseList = modelMapper.map(listIAlreadyHave, listType);

    return responseList;
}

List<SubClass1> list = doIt(SubClass1.class);

Inspiration here灵感在这里

I would like list to be a list of SubClass1 instances, but i get only BaseClass instances.我希望 list 是SubClass1实例的列表,但我只得到BaseClass实例。 I don't blame Java for not understading my listType definition because T is unknown on runntime, but how can i use the specificClass parameter i generously provide?我不责怪 Java 没有理解我的listType定义,因为 T 在运行时是未知的,但是我如何使用我慷慨提供的specificClass参数?

Thank you dear community!谢谢亲爱的社区!

You can use explicit mapping and specify the way mapper has to convert one instance to another.您可以使用显式映射并指定映射器必须将一个实例转换为另一个实例的方式。 Didn't you meant to make SubClass1 extend BaseClass?你不是想让 SubClass1 扩展 BaseClass 吗? If you meant to you could just take advantage of polymorphism.如果你的意思是你可以利用多态性。

Have a good day!祝你有美好的一天!

如何转换列表<string[]>列出<object>使用 modelmapper 或 stream().map()?<div id="text_translate"><p> 我有以下数据作为 java 中的 String[] 列表,是否可以使用 stream().map() 进行转换? 这是列表的一个示例。</p><pre> Data's type is List&lt;String[]&gt; data which contains the following structure: ["a","b","c","d"], ["e","f","g","e"], ["e","f","g","e"]</pre><p> 我试图用modelMapper和没有modelMapper的map我的值并且数据是空的:</p><pre> List&lt;Custom&gt; mapInfo = new ArrayList&lt;CustomData&gt;(); mapInfo=data.stream().map(objectModel -&gt; modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());</pre><p> 但是,当我尝试使用数据时,数组的每个 object 上的 object 结构都是空的:</p><pre> @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class CustomData(){ @Builder.Default private String valueA=""; @Builder.Default private String valueB=""; @Builder.Default private String valueC=""; @Builder.Default private String valueD=""; }</pre></div></object></string[]> - How to convert List<String[]> to List<Object> using modelmapper or stream().map()?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ModelMapper:如何 map 列表<string>哪个作为通用传递?</string> - ModelMapper: How to map List<String> which is passed as generic? 如何使用 ModelMapper map 嵌套列表 - How to map a nested list using ModelMapper 如何在Java中将泛型转换为具体类型 - How to convert a generic type to a concrete type in Java 如何转换列表<string[]>列出<object>使用 modelmapper 或 stream().map()?<div id="text_translate"><p> 我有以下数据作为 java 中的 String[] 列表,是否可以使用 stream().map() 进行转换? 这是列表的一个示例。</p><pre> Data's type is List&lt;String[]&gt; data which contains the following structure: ["a","b","c","d"], ["e","f","g","e"], ["e","f","g","e"]</pre><p> 我试图用modelMapper和没有modelMapper的map我的值并且数据是空的:</p><pre> List&lt;Custom&gt; mapInfo = new ArrayList&lt;CustomData&gt;(); mapInfo=data.stream().map(objectModel -&gt; modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());</pre><p> 但是,当我尝试使用数据时,数组的每个 object 上的 object 结构都是空的:</p><pre> @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor public class CustomData(){ @Builder.Default private String valueA=""; @Builder.Default private String valueB=""; @Builder.Default private String valueC=""; @Builder.Default private String valueD=""; }</pre></div></object></string[]> - How to convert List<String[]> to List<Object> using modelmapper or stream().map()? 如何获得具体类型的通用接口 - How to get concrete type of a generic interface ModelMapper 将 List&lt;…&gt; 映射到对象属性 - ModelMapper map List<…> to object property ModelMapper在运行时更改泛型类型 - 奇怪的行为 - ModelMapper changes generic type on runtime - weird behavior 如何使用 ModelMapper 实现 map oneToMany - How to map oneToMany using ModelMapper ModelMapper:如何将此json映射到Java? - ModelMapper: how to map this json to Java? 使用 ModelMapper 映射抽象类型的字段 - Using ModelMapper to map field of abstract type
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM